0

对于 500,000 个节点,我需要 10-15 秒,知道如何优化它吗?

start n=node(*) WHERE HAS(n.score) RETURN n, n.score ORDER BY n.score DESC 限制 5;

环顾四周,我感觉到 WHERE 子句正在减慢它的速度,但我不确定如何在节点的属性上使用 MATCH。

4

2 回答 2

1

正如 Luanne 所说,这需要时间,因为您正在搜索图表的所有节点。您只能在具有 score 属性的节点中搜索(通过索引它们,通过从公共节点搜索它们,或者 - 如果您使用的是 Neo4j 2 - 通过标记它们)

有关索引的进一步解释,请参阅http://docs.neo4j.org/chunked/milestone/indexing.html(这似乎是更常见的解决方案)。

于 2013-07-21T13:46:48.703 回答
0

使用 node(*),您可以有效地触摸 500,000 个节点的整个图表,以检查属性的存在,并对结果进行排序。你得到多少行?如果你放弃你的订单条款,它会更快吗?

你的用例是什么?想知道您是否可以对此进行不同的建模以避免全局图形操作。例如,使用 score 属性索引节点,或者创建从所有具有 score 属性的节点到某种参考节点的关系。真的取决于你的用例

于 2013-07-21T09:03:38.697 回答