5

いくつかの小さな変更を加えた後、ここに示す例を試しました。主に、実験目的で、一致しない where 句を追加しました。

私のシステム(1.9.M04 - Java 6u43 - ubuntu 12.04 - AMD phenom II -X6 1090T)では、単純なクエリ

データベースにノードが 1 つだけある場合 (これも組み込まれています)、262 ミリ秒かかりました。明らかに何かがうまくいかない。何が問題なのですか?

ありがとう

public void test()
    {
        GraphDatabaseService db = g = new GraphDatabaseFactory().newEmbeddedDatabase("./neo4j1test" );

        long id;
        Transaction tx = db.beginTx();
        try
        {
            Node refNode = db.createNode();
            id = refNode.getId();
            refNode.setProperty( "name", "reference node" );
            tx.success();
        }
        finally
        {
            tx.finish();
        }


        ExecutionEngine engine = new ExecutionEngine( db );
        ExecutionResult result = engine.execute( "start n=node("+id+") where ( n.name = \"reference node\") return n.name" );
        long time = System.currentTimeMillis();
        result = engine.execute( "start n=node("+id+") where ( n.name = \"reference node\") return n.name" );
        time = (System.currentTimeMillis() - time);
        System.out.println("Time taken : " + time + " ms.");
    }
4

2 に答える 2

0

Cypher クエリ技術にも同様の問題があります。Cypher 宣言クエリの処理のオーバーヘッドによるパフォーマンスの低下。オーバーヘッドが許容できない巨大であることに同意します。

neo4j を最大限に活用するには、Core Java API を使用する必要があります。

この記事を参照してください: Core Java API を使用して neo4j の機能をフルに活用する

そしてこれ:グラフクエリ言語のパフォーマンス: Neo4j における Cypher、Gremlin、Native Access の比較

于 2013-08-25T20:16:10.923 に答える
0

name プロパティにインデックスを付けたいと思うでしょう ( indexingを参照してください)。その後、次のようにクエリできます。

START n=node:your_index_name("name:the_indexed_name") RETURN n;

インデックスによるルックアップ ノードは、WHERE 句によるフィルタリングよりもはるかに高速です。

于 2013-03-15T08:22:48.703 に答える