2017-01-22 8 views
0

この質問は何度か尋ねられましたが、答えのどれもが私の問題を解決していません。私は次のクエリを使用してデータをインポートしています:Neo4j CSVインポートが遅すぎる

USING PERIODIC COMMIT 
LOAD CSV WITH HEADERS FROM 
'file:///C:/Users/Zo5/Documents/Neo4j/check/import/result1.csv' AS line1 
MERGE (p:Person {forename:line1.forename, surname:line1.surname,  nationality:line1.nationality, occupation:line1.occupation, title:line1.title}) 

このプロセスは遅すぎます。 CSVファイルは約700MBです。 0.01 GBをインポートするには約15分かかります。新しいデータベースで同じクエリを実行しようとしましたが、プロセスはずっと高速です。誰もがこの問題の原因を知っていますか?インデックスはforenameです。

+0

インデックスを指定しようとしましたか?あなたのインポートが多くのパターンマッチングを使用するので、forenames、surnames、...の索引付けは、クエリを高速化する可能性があります。 –

+0

同じクエリが新しいデータベースでうまく動作するので問題はないと思いますが、試してみます – Porjaz

答えて

1

個人を一意に識別するプロパティは何ですか? MERGEにはTHOSEプロパティを使用し、残りのプロパティにはON CREATE SETを使用します。

MERGEごとに、指定されたすべてのプロパティを持つPersonとPersonの既存のセットを比較して、Personがすでに存在するかどうかを確認します。あなたのMERGEで使用されているプロパティを絞り込むことで、比較は少なくなりますが、比較はまだ行われますが、挿入物は着実に遅くなります。

追加する人物がまだ存在しない場合は、MERGEの代わりにCREATEを使用します。

+0

MERGEに 'forename'と' surname'だけを置き、他のプロパティにはON CREATE SETを使用しました。この方法では少し速いですが、まだ十分速くはありません。私は約5GBをインポートする必要がありますので、この速度では大量の時間がかかります。 ':Person'に重複があるので、MERGEを使用する必要があります – Porjaz

関連する問題