了解Neo4j Cypher配置文件关键字和执行计划

了解Neo4j Cypher配置文件关键字和执行计划,neo4j,cypher,Neo4j,Cypher,请有人解释或提供链接,让我们了解profile命令,了解Cypher查询的执行计划,以满足优化需求,并了解Cypher的工作原理 例如,我创建了以下Neo4j(2.0版)示例数据库 create (ayan:Person{name:"Ayan",age:25}), (dixi:Person{name:"Dixi",age:26}), (thaggu:Person{name:"Thaggu",age:27}), (santosh:Person{name:"Santosh",age:28}),

请有人解释或提供链接,让我们了解profile命令,了解Cypher查询的执行计划,以满足优化需求,并了解Cypher的工作原理

例如,我创建了以下Neo4j(2.0版)示例数据库

create (ayan:Person{name:"Ayan",age:25}), 
(dixi:Person{name:"Dixi",age:26}), 
(thaggu:Person{name:"Thaggu",age:27}), 
(santosh:Person{name:"Santosh",age:28}),
(ayan)-[:FRIEND]-(santosh),
(ayan)-[:FRIEND]-(dixi),
(thaggu)-[:FRIEND]-(dixi);
现在,当我运行下面的简单查询时

profile match n:Person, n-[:FRIEND]-m where n.name="Ayan" return m;
我得到了以下结果,但我不能理解结果下面的解释。 请帮忙

+--------------------------------+
| m                              |
+--------------------------------+
| Node[4]{age:28,name:"Santosh"} |
| Node[2]{age:26,name:"Dixi"}    |
+--------------------------------+
2 rows



==> ColumnFilter(symKeys=["n", "m", "  UNNAMED17"], returnItemNames=["m"], _rows=2, _db_hits=0)

==> PatternMatch(g="(m)-['  UNNAMED17']-(n)", _rows=2, _db_hits=0)

==>   Filter(pred="(Property == Literal(Ayan) AND hasLabel(n: Person))", _rows=1, _db_hits=4)

==>     NodeByLabel(label="Person", identifier="n", _rows=4, _db_hits=0)

配置文件信息目前尚未完成,因此未记录。然而,关键数字是点击率不应该特别高,因为它们很昂贵。

了解执行计划

从Neo4j 2.2开始,文件中有一章解释了执行计划,请参阅

如何分析查询

还有一个新的分析关键字,
EXPLAIN
,它允许您在不执行查询的情况下查看执行计划。最后还有一个新的“基于成本”(与“基于规则”相反)查询计划器,您可以强制对所有查询或单个查询使用其中一个计划器。有关新的分析工具的更多详细信息以及相关文档的链接,请参阅