Neo4j Cypher-第一次调用时查询性能较慢
我有以下密码查询:Neo4j Cypher-第一次调用时查询性能较慢,neo4j,cypher,Neo4j,Cypher,我有以下密码查询: MATCH (v:Value)-[:CONTAINS]->(hv:HistoryValue) WHERE v.id = 13335 WITH hv ORDER BY hv.createDate DESC OPTIONAL MATCH (hv)-[:CREATED_BY]->(u:User) WHERE true WITH COLLECT({userId: u.id, historyValueId: hv.id, historyValue: hv.orig
MATCH (v:Value)-[:CONTAINS]->(hv:HistoryValue)
WHERE v.id = 13335
WITH hv
ORDER BY hv.createDate DESC
OPTIONAL MATCH (hv)-[:CREATED_BY]->(u:User) WHERE true
WITH COLLECT({userId: u.id, historyValueId: hv.id, historyValue: hv.originalValue, historyValueDescription: hv.description, historyValueCreateDate: hv.createDate}) AS data, count(hv) as count, ceil(toFloat(count(hv)) / 100) as step
RETURN REDUCE(s = [], i IN RANGE(0, count - 1, CASE step WHEN 0 THEN 1 ELSE step END) | s + data[i]) AS result
在第一次访问期间,在cold Neo4j数据库上,此查询工作得非常慢,但第二次和后续调用工作得很好
这是配置文件输出:
是否有任何方法可以提高此查询性能(添加适当的索引等)?通常,第一次查询需要花费时间来构建执行计划,可能还需要做一些其他事情(我不确定列表)。如果每次使用不同的v.id运行查询时都会出现问题,那么将其参数化应该会提供更好的性能。通常,第一次查询在构建执行计划时会花费一些时间,可能还有其他一些事情(我不确定列表)。如果每次使用不同的v.id运行查询时都会出现问题,那么将其参数化应该会提供更好的性能。对冷数据库进行第一次查询时相对较慢的主要原因可能是冷数据库尚未在内存中缓存任何数据
启动数据库后立即调用APOC过程可能会使“第一次”查询更快。对冷数据库进行第一次查询时相对较慢的主要原因可能是冷数据库尚未在内存中缓存任何数据 在启动DB后立即调用APOC过程可能会使“第一次”查询更快