优化:同一个Cypher查询运行多次

时间:2015-11-04 16:41:10

标签: neo4j cypher

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

目前我将所有查询存储为字符串。永远不会有超过20个循环,但仍然必须每次解析所有查询似乎是一个开销。有没有办法优化它,比如将查询存储在某些预编译状态?或者没有什么可担心的?

任何其他提示可以使上述方案更快地运作?

1 个答案:

答案 0 :(得分:2)

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

  1. 您可以在代码中重用查询,而无需根据要包含的值来解析/构造字符串。
  2. 性能。 cypher编译器缓存Cypher查询的执行计划(即之前看到的查询)。如果使用查询参数,则在再次执行Cypher查询时不会产生生成查询计划的开销。
  3. http://neo4j.com/docs/stable/cypher-parameters.html

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