标签: performance neo4j cypher aggregation
我有以下查询(带有虚拟关系和标签名称), 并且探查器显示我的#of命中数是用户节点数的3倍。
MATCH (user:User) WHERE NOT(user-[:r1]->(:L1)) AND NOT(user-[:r2]->(:L2)) return count(user)
我想知道是否有办法让它跑得更快
答案 0 :(得分:1)
是的,你可以使用size来生成相当于getDegree()的Java,并且性能更高。
size
getDegree()
MATCH (user:User) WHERE size((user)-[:r1]->(:L1)) = 0 AND size((user)-[:r2]->(:L2)) = 0 return count(user)
如果您比较查询计划,您可以看到包含大小的计划更加线性:
WITH WHERE NOT:
WHERE NOT
WITH size()(getDegree)
size()