1

http://console.neo4j.org/r/8mkc4z

上記のグラフでは、クエリの目的

start n=node(1) match n-[:KNOWS]->m-[:KNOWS]->p where p.name='Cypher' return n, m, p

Neo が m を知り、m が Cypher を知るように、m を見つけることです。

次のクエリでも同じことが実現できます-

start n=node(1), p=node(4) match n-[:KNOWS]->m-[:KNOWS]->p return n, m, p

1 つ目は where 条件を使用し、2 つ目は複数の開始ノードを使用します。

パフォーマンスの観点から、どちらをより速く実行する必要があり、おそらくどのシナリオで実行する必要がありますか。

複数の開始ノードでパフォーマンスの問題に直面しましたが、論理的には、条件がより高速である必要がある場所ではなく、開始ノードとして持っていると思います。

さまざまなシナリオに基づいて使用するアプローチに関する規則はありますか。

4

1 に答える 1

1

これまでのところ、言語の暗号化に取り組み、1.8 で更新機能を追加しました。

Neo4j 1.9 では、サイファーのパフォーマンスに焦点を当てます。

これまでのところ、単一の開始点を持つパターン マッチャーは、複数の開始点を持つパターン マッチャーよりも高速です。それでも、フィルタリングが事後にのみ行われる場合 (最初のクエリのように)、パフォーマンスが低下する可能性があります (結果の量によって異なります)。

しかし、それは次のリリースの過程で変更されます。これまでのところ、私が提供できる最善のヒントは、現実的なデータセットを使用してクエリをプロファイルすることです (期待されるデータがまだない場合は、データ ジェネレーターを記述してください)。

于 2012-09-02T21:29:21.590 に答える