2013-07-20 23 views
5

プロファイルコマンドについて学ぶことができるリンクを説明したり、最適化ニーズのためのCypherクエリの実行計画やCypherの仕組みを理解してください。Neo4j 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) 

答えて

5

プロファイル情報はまだ完成していないため、文書化されていません。ただし、クリティカルな数値は、高価なので非常に高くすべきではない_db_hitsです。

1

実行計画を説明するマニュアルの章があるのNeo4j 2.2のとおり実行計画

を理解し、Chapter 16. Execution Plansを参照してください。クエリを実行せずに実行計画を表示することができますクエリ

新しいプロファイルキーワードもあり、EXPLAINをプロファイルする方法

。最後に、「コストベース」(「ルールベース」とは対照的)のクエリプランナがあり、すべてのクエリまたは個々のクエリに対してどちらかのプランナを強制的に使用できます。新しいプロファイリング機能と関連ドキュメントへのリンクの詳細については、Is there a way to show cypher execution plan?を参照してください。