【发布时间】:2018-01-14 13:09:52
【问题描述】:
我有以下 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.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
在第一次访问冷的 Neo4j 数据库时,此查询运行速度很慢,但第二次和后续调用运行良好。
这是 PROFILE 输出:
有什么方法可以提高这个查询性能(添加适当的索引等等)?
【问题讨论】: