首页 > 解决方案 > 删除某种类型的所有边

问题描述

我有一个 neo4j 数据库,它有近 500 万个节点和 1200 万条边。我想删除边缘(关系)的类型(UsedAt)。有近 300 万条"UsedAt"类型的边。

我正在写一个查询

match ()-[e:UsedAt]->() delete e

这需要太多时间。永不停止。

我也试过 CALL apoc.periodic.iterate("match ()-[e:UsedAt]->() return e", "delete e", {batchSize:1000, parallel:true})

那也永远不会停止。如何在相对较大的数据库上有效地删除某种类型的所有边(关系)?

标签: neo4jcyphergraph-databases

解决方案


这不是您如何编写查询的问题,而是neo4j 的结构问题。简而言之,无论您如何编写查询,都无法像您期望的那样高效地删除边缘。这是因为: 1)在 Neo4j 中,您的数据量很大。从本质上讲,neo4j 确保了每个操作的事务。2)从磁盘或内存中有很多随机读写,而且都不是很快。所以如果你坚持neo4j,你最好避免这样的操作。


推荐阅读