Neo4J-改进LoadCSV关系查询时间

cpjpxq1n  于 11个月前  发布在  其他
关注(0)|答案(1)|浏览(107)

我有一个neo4j数据库,有100万个用户节点。我试图从一个400万行的CSV文件中加载这些节点之间的关系。一个用户可以关注另一个用户。此时,查询已经运行了几个小时。是查询有什么问题导致它这么慢吗?

CALL apoc.periodic.iterate(
"LOAD CSV WITH HEADERS FROM 'file:///cleaned_follows_output.csv' AS row RETURN row",
"MATCH (u1 {id: row._s}), (u2 {id: row._t}) MERGE (u1)-[:FOLLOWING]->(u2)",
{batchSize: 10000, parallel: true}
);

字符串
我已经通过运行以下命令在id属性上创建了一个索引:

CREATE INDEX FOR (u: User) ON (u.id)


指标:

Index Name  Type    Uniqueness  EntityType  LabelsOrTypes   Properties  State
index_343aff4q  LOOKUP      NODE    null    null    ONLINE
index_9f2536bf  RANGE       NODE    [ "User" ]  [ "id" ]    ONLINE
index_f7700478  LOOKUP      RELATIONSHIP    null    null    ONLINE

jgzswidk

jgzswidk1#

您的MATCH子句必须指定与节点索引关联的 node label(除了node属性),以便Cypher规划器考虑使用该索引。
这个查询应该快得多:

CALL apoc.periodic.iterate(
"LOAD CSV WITH HEADERS FROM 'file:///cleaned_follows_output.csv' AS row RETURN row",
"MATCH (u1:User {id: row._s}), (u2:User {id: row._t}) MERGE (u1)-[:FOLLOWING]->(u2)",
{batchSize: 10000, parallel: true}
);

字符串

相关问题