[英]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.