有人可以解释或提供我们可以了解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)
答案 0 :(得分:5)
配置文件信息现在尚未完成,因此未记录。但是,关键数字是_db_hits,因为它们很昂贵所以不应该特别高。
答案 1 :(得分:1)
了解执行计划
从Neo4j 2.2开始,文档中有一章解释了执行计划,请参阅Chapter 16. Execution Plans。
如何分析查询
还有一个新的分析关键字EXPLAIN
,它允许您在不执行查询的情况下查看执行计划。最后有一个新的,基于成本的' (与基于规则的')查询计划程序相反,您可以强制将所有查询或任何查询用于任何规划程序。有关新的性能分析工具的详细信息以及相关文档的链接,请参阅Is there a way to show cypher execution plan?。