簡體   English   中英

Neo4J / Cypher Query 按屬性排序非常慢

[英]Neo4J / Cypher Query very slow with order by property

我有一個包含 5M 節點和 10M 關系的圖形數據庫。 我使用的是 4GB RAM 的 Macbook Pro。 我已經嘗試調整java堆大小和neo4j內存但沒有成功。

我的問題是我有一個簡單的密碼查詢:

MATCH (pet:Pet {id:52163})-[r:FOLLOWS]->(friend) 
MATCH (friend)-[r:POSTED]->(n) 
RETURN friend.id, TYPE(r),LABELS(n),n.id
LIMIT 30;

這個查詢需要 100ms ,這是令人印象深刻的。 但是當我添加“ORDER BY”時,這個查詢需要很長時間=> 8s:/

MATCH (pet:Pet {id:52163})-[r:FOLLOWS]->(friend) 
MATCH (friend)-[r:POSTED]->(n) 
RETURN friend.id, TYPE(r),LABELS(n),n.id
ORDER BY r.date DESC
LIMIT 30;

有人有想法嗎?

您可能需要考慮關系索引以加快查詢速度。 date屬性可以通過這種方式建立索引。 您正在使用ORDER BY關鍵字,這幾乎總是會使您的查詢變慢,因為它需要迭代整個結果集以執行排序。

如果適合您的需求,還可以考慮使用單個MATCH語句:

MATCH (pet:Pet {id:52163})-[r:FOLLOWS]->(friend)-[r:POSTED]->(n) 

感謝您的回答 !

我重新導入我與邁克爾飢餓的批量進口的數據庫,node_auto_index和relationship_auto_index的date財產。

這些索引似乎一切正常,所有與date屬性的關系都被索引了。

但是查詢仍然太長...什么都沒有改變

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM