在我的场景中,我有几十个Cypher查询一个接一个地执行。如果它们中的任何一个返回了一些数据(揭示了一些知识),那么在循环结束时图形会相应地改变,并且所有查询都会再次执行。优化:相同的Cypher查询运行多次
当前我将所有查询存储为字符串。从来没有超过20个循环,但仍然不得不解析所有的查询每一次似乎是一个开销。有没有一种方法来优化它,就像将查询存储在某种预编译状态一样?或者没有什么可担心的?
任何其他提示可以使上述场景工作更快?
在我的场景中,我有几十个Cypher查询一个接一个地执行。如果它们中的任何一个返回了一些数据(揭示了一些知识),那么在循环结束时图形会相应地改变,并且所有查询都会再次执行。优化:相同的Cypher查询运行多次
当前我将所有查询存储为字符串。从来没有超过20个循环,但仍然不得不解析所有的查询每一次似乎是一个开销。有没有一种方法来优化它,就像将查询存储在某种预编译状态一样?或者没有什么可担心的?
任何其他提示可以使上述场景工作更快?
正如其他人在评论中指出的那样,应尽可能使用查询参数。这有两个好处:
http://neo4j.com/docs/stable/cypher-parameters.html
http://neo4j.com/docs/stable/tutorials-cypher-parameters-java.html
非常感谢您的回答! – geronimo
如果参数化查询,则执行计划将被缓存 –
没有更多的细节,很难说,如果你能提高你的查询。但我认为,如果您将查询存储为字符串并再次运行,则无需担心。没有预编译的Cypher查询。 –