和跑步有什么区别
MATCH (n) WHERE NOT exists(n.foo) RETURN n
Run Code Online (Sandbox Code Playgroud)
和
MATCH (f) WHERE f.foo IS NULL RETURN f
Run Code Online (Sandbox Code Playgroud)
我运行了两个查询并得到了相同的结果,性能或其他方面有什么区别吗?
让我们创建一个小示例数据集:
CREATE (n1 {foo: 'bar'}), (n2)
Run Code Online (Sandbox Code Playgroud)
我们用来PROFILE显示执行计划和每个步骤中的行数。
查询MATCH (n) WHERE NOT exists(n.foo) RETURN n:
查询MATCH (f) WHERE f.foo IS NULL RETURN f:
执行计划显示实际行数(在处理步骤之间移动)和数据库命中数相同。过滤条件有点不同,但我预计不会有任何显着差异 - 执行时间可能主要由磁盘访问决定,并且正如 EJP 评论的那样,由网络传输决定。当然,可以肯定的是,您必须在更大的数据集上运行基准测试。