我有两个导入neo4j的csv文件:uniq_names
和all_names
。我在uniq_names
文件中有一列和大约5000行,我有三列:name
,id1
和id2
all_names
大约有300,000行 MATCH (a:uniq_names),(b:all_names)
WHERE a.name=b.name AND b.id1<>b.id2
CREATE (a)-[:child]->(b);
1}}文件。
现在我正在尝试与下面的代码建立关系:
{{1}}
当我执行它认为大约20分钟的代码但返回:“0行返回”结果,并且它没有创建任何关系。当我在all_names文件中有1000行和50行时,它完美地运行uniq_names文件 我有windows 7 64bit,jdk 1.7.0_71,neo4j 2.1.6企业。有任何想法吗?
答案 0 :(得分:1)
该查询基本上会创建一个5k uniq_names
和300k all_names
的交叉产品,因此15亿次操作 - 效率不高。
优化:
创建索引:CREATE INDEX ON :all_names(name)
。然后首先遍历所有uniq_names
并通过索引查找找到相应的all_names
,检查id条件并创建关系:
MATCH (a:uniq_names)
WITH a
MATCH (b:all_names {name: a.name})
WHERE b.id1<>b.id2
CREATE (a)-[:child]->(b);