逃跑和逃跑有什么区别
MATCH (n) WHERE NOT exists(n.foo) RETURN n
以及
MATCH (f) WHERE f.foo IS NULL RETURN f
我运行了两个查询,得到了相同的结果,是性能上的差异还是其他原因?
oxalkeyp1#
让我们创建一个小的示例数据集:
CREATE (n1 {foo: 'bar'}), (n2)
我们使用PROFILE来显示执行计划和每个步骤中的行数。对于查询MATCH (n) WHERE NOT exists(n.foo) RETURN n:
PROFILE
对于查询MATCH (f) WHERE f.foo IS NULL RETURN f:
执行计划显示实际行数(在处理步骤之间旅行)和数据库命中的数量是相同的。过滤条件有点不同,但我不会期望有任何显著的差异-执行时间将很可能由磁盘访问和正如EJP评论的那样由网络传输主导。当然,要肯定的是,您必须在更大的数据集上运行基准测试。
1条答案
按热度按时间oxalkeyp1#
让我们创建一个小的示例数据集:
我们使用
PROFILE
来显示执行计划和每个步骤中的行数。对于查询
MATCH (n) WHERE NOT exists(n.foo) RETURN n
:对于查询
MATCH (f) WHERE f.foo IS NULL RETURN f
:执行计划显示实际行数(在处理步骤之间旅行)和数据库命中的数量是相同的。过滤条件有点不同,但我不会期望有任何显著的差异-执行时间将很可能由磁盘访问和正如EJP评论的那样由网络传输主导。当然,要肯定的是,您必须在更大的数据集上运行基准测试。