如何有效地创建neo4j中具有关系的非重复节点?

时间:2015-11-03 10:51:40

标签: java neo4j

我需要创建50,000个节点(:Person)与50个节点(:office)建立某种关系,保证:office个元素没有重复元素,但是{{1有}。

我的代码如下所示:

:Person

它确实有效,但需要花费很多时间(约2小时)。我想知道一种有效的方法来进行此查询

2 个答案:

答案 0 :(得分:3)

请使拼写/大小写保持一致。 尝试使用Neo4j 2.3.0

CREATE INDEX ON :Office(rc);

CREATE INDEX ON :Person(numDoc);

// make sure the indexes are online

:schema await

MATCH (x:Office{ rc:"345421"})
LOAD CSV FROM  "file:///path/to/file" AS csvLine
MERGE (n:Person { numDoc: toInt(csvLine[1]) })
CREATE (n) -[:Afil]-> (x);

如果你只创建5万人和50k关系,你就不需要定期提交。然后,您可以预先与办公室匹配,而不是每一行。

如果查询使用您创建的索引,则可以通过在EXPLAIN前面添加查询来检查查询。

答案 1 :(得分:1)

您是否为MATCH / MERGE条款制定了索引?

CREATE INDEX ON :Office(rc)
CREATE INDEX ON :Person(numDoc)

另外,在我看来TX的尺寸可能太小了。 你试过把它增加到10000吗?

USING PERIODIC COMMIT 10000

您可能想要查看的另一件事是您的内存设置。你有足够的页面缓存和堆来让Neo4j高效运行吗?