Neo4j 不存在 vs 为空

标签 neo4j cypher

运行有什么区别

MATCH (n) WHERE NOT exists(n.foo) RETURN n

MATCH (f) WHERE f.foo IS NULL RETURN f

我运行了两个查询并得到了相同的结果,是性能上的差异还是其他原因?

最佳答案

让我们创建一个小示例数据集:

CREATE (n1 {foo: 'bar'}), (n2)

我们使用 PROFILE显示执行计划和每个步骤中的行数。

对于查询 MATCH (n) WHERE NOT exists(n.foo) RETURN n:

enter image description here

对于查询 MATCH (f) WHERE f.foo IS NULL RETURN f:

enter image description here

执行计划显示实际行数(在处理步骤之间移动)和数据库命中数相同。过滤条件有点不同,但我不希望有任何显着差异 - 执行时间可能主要由磁盘访问决定,正如 EJP 评论的那样,由网络传输决定。当然,可以肯定的是,您必须在更大的数据集上运行基准测试。

关于Neo4j 不存在 vs 为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42847470/

相关文章:

Neo4j 安装 APOC 和图形算法 Neo.ClientError.Procedure.ProcedureRegistrationFailed

neo4j - 组合多个 MATCH 密码查询的收集结果

security - 图数据库漏洞

javascript - Neo4j虚拟机在windows azure中性能不佳

neo4j - 密码查询 : Set nodes properties to lowercase

neo4j - 创建与 py2neo 一起使用的 Neo4j 日期树

java - 所有节点上的密码索引公共(public)属性

Neo4j - Cypher 中未知的 'toFloat' 函数

neo4j - 如何执行neo4j密码代码格式化

graph - Neo4j中没有 super 节点的最短路径