首页 > 解决方案 > Neo4j 浏览器崩溃灰屏

问题描述

MATCH (a:Doss)
MATCH (b:Doss)
WHERE a.Num=b.Num
return a,b

这需要很长时间,然后没有结果,只是浏览器因灰屏而崩溃。注意:在这个数据库中,我有 6M 个节点。

标签: neo4j

解决方案


您需要一个关于 :Doss(Num) 的索引,否则这将无法在合理的时间内完成。

关键是大多数 Cypher 操作是按行执行的。因此,根据第一个 MATCH 的每个结果执行第二个 MATCH。

如果您没有索引,那么这可能会为 执行 NodeByLabelScan a,然后为每个a节点执行另一个 NodeByLabelScan并过滤以查找匹配项b

基本上,您将执行总共 6M + 1 个标签扫描,并过滤 6M * 6M 行,这不是一个好主意。

如果添加索引,那么您将只执行一次 NodeByLabelScan,然后 6M 索引试图在每行中查找b与 num 相同的所有节点a

您应该能够在查询上运行 EXPLAIN 以确认计划者希望如何执行此操作。


推荐阅读