2015-11-04 83 views
1

在我的场景中,我有几十个Cypher查询一个接一个地执行。如果它们中的任何一个返回了一些数据(揭示了一些知识),那么在循环结束时图形会相应地改变,并且所有查询都会再次执行。优化:相同的Cypher查询运行多次

当前我将所有查询存储为字符串。从来没有超过20个循环,但仍然不得不解析所有的查询每一次似乎是一个开销。有没有一种方法来优化它,就像将查询存储在某种预编译状态一样?或者没有什么可担心的?

任何其他提示可以使上述场景工作更快?

+0

如果参数化查询,则执行计划将被缓存 –

+0

没有更多的细节,很难说,如果你能提高你的查询。但我认为,如果您将查询存储为字符串并再次运行,则无需担心。没有预编译的Cypher查询。 –

回答

2

正如其他人在评论中指出的那样,应尽可能使用查询参数。这有两个好处:

  1. 您可以在代码中重复使用查询,而不必在给定要包含的任何值的情况下解析/构造字符串。
  2. 表现。 cypher编译器缓存Cypher查询的执行计划(即它以前见过的查询)。如果使用查询参数,则在再次执行Cypher查询时,不会产生生成查询计划的开销。

http://neo4j.com/docs/stable/cypher-parameters.html

http://neo4j.com/docs/stable/tutorials-cypher-parameters-java.html

+0

非常感谢您的回答! – geronimo