首页 > 解决方案 > WITH - Neo4j 中的 WHERE

问题描述

谁能解释两个查询之间的区别:(我更改了 WHERE 和 WITH 的顺序)

MATCH (t:Transaction)
WHERE t.AcctNumber = '001'
WITH COLLECT(t.ActivityDate) as date, COLLECT(t.Amount) as amount, t
RETURN t.AccNumber, date, amount

MATCH (t:Transaction)
WITH COLLECT(t.ActivityDate) as date, COLLECT(t.Amount) as amount, t
WHERE t.AcctNumber = '001'
RETURN t.AccNumber, date, amount

WHERE 和 WITH 的顺序对我的查询性能有影响吗?#Neo4j,密码

标签: neo4jcypher

解决方案


您可以使用“PROFILE [您的查询]”来查看会发生什么。如果没有可测试的数据集,我无法向您展示,但在第一个查询中,您收集有关选择的信息 (t.acctNumber = 001),而在第二个查询中,您收集所有交易以及您过滤的所有交易。所以简而言之,第一个查询可以最小化直接处理的命中数,而在第二个查询中,您只在收集之后才这样做,这需要更多的计算能力。


推荐阅读