我有一棵树,有80,000个节点和4M叶子。通过29M关系将叶子分配给树节点。事实上,我有大约4棵树,叶子被分配到不同的节点,但这并不重要。
经过大约6天的工作后,我想出了如何在可接受的时间和很多情况下(csv import neo4j 2.1)将这样数量的数据导入neo4j,其中neo4j进程停留在100%并且似乎没有做任何事情。我现在用这个工具创建数据库: https://github.com/jexp/batch-import/tree/20 这非常快!
现在我终于得到了我的数据库并开始使用一个简单的查询,例如“有多少个叶子有一个特定的节点”:
MATCH(n:Node {id:123}) - [:ASSIGNED] - (l:Leaf)RETURN COUNT(l);
我在“id”属性上创建了一个索引,但这个查询仍需要52秒。 似乎关系(没有属性)根本没有索引... 有没有办法让这更快?
答案 0 :(得分:1)
不必将关系编入索引。
您是否创建了这样的索引:
create index on :Node(id);
我建议您向箭头添加方向,否则您将遵循树上下的所有关系。
MATCH (n:Node {id:123})<-[:ASSIGNED]-(l:Leaf) RETURN COUNT(l);