Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Performance Cypher:使用WHERE子句或MATCH属性定义进行精确匹配?_Performance_Neo4j_Cypher_Query Tuning - Fatal编程技术网

Performance Cypher:使用WHERE子句或MATCH属性定义进行精确匹配?

Performance Cypher:使用WHERE子句或MATCH属性定义进行精确匹配?,performance,neo4j,cypher,query-tuning,Performance,Neo4j,Cypher,Query Tuning,在Neo4j(3.0版)中,以下查询返回相同的结果: 1. MATCH (a:Label) WHERE a.property = "Something" RETURN a 2. MATCH (a:Label {property: "Something"}) RETURN a 在处理一些大型数据集时,我注意到(并使用EXPLAIN和PROFILE进行了验证)在某些情况下,像第二个这样的查询执行得更好更快。虽然存在两个版本性能相同的其他实例,但我还没有看到第一个版本性能更好的实例 neo4j文档和

在Neo4j(3.0版)中,以下查询返回相同的结果:

1. MATCH (a:Label) WHERE a.property = "Something" RETURN a
2. MATCH (a:Label {property: "Something"}) RETURN a
在处理一些大型数据集时,我注意到(并使用
EXPLAIN
PROFILE
进行了验证)在某些情况下,像第二个这样的查询执行得更好更快。虽然存在两个版本性能相同的其他实例,但我还没有看到第一个版本性能更好的实例

neo4j文档和教程也分为两部分。两者之间没有明确的比较。docs和tut使用两个版本,通常倾向于第一个版本(可能是因为非精确匹配只能使用
WHERE
子句)。但指导方针还指出,越早缩小搜索范围,搜索速度就越快

  • 两个版本总是返回相同的结果,对吗
  • 第二个版本通常会表现得更好,因为它缩小了搜索范围,这是对的吗
  • 不,两者的计算结果基本上都是相同的查询计划。由于NeN4J使用基于成本的优化器,查询计划可能随时间变化,因为优化器考虑改变(可能现在有更多的数据,所以索引查找比NoDyLabelSCAN更便宜)。李>