Neo4j在循环中只匹配一个节点/时间

2024-04-16 11:20:53 发布

您现在位置:Python中文网/ 问答频道 /正文

我想知道是否有可能在Cypher查询中将匹配限制为只有一个节点。你知道吗

我有数十亿个节点,如果我在匹配中使用Limit 1与否,会有很大的不同:

1)MATCH (n:Node) WHERE n.id = "UUID" RETURN n LIMIT 1

2)MATCH (n:Node) WHERE n.id = "UUID" RETURN n

(1)以毫秒为单位执行,(2)需要几分钟(我相信它正在尝试查找具有该id的所有节点,尽管有一个唯一的索引)。你知道吗

现在,在一个有两个节点ID的巨大CSV文件中,我想匹配并创建如下关系:

PROFILE
USING PERIODIC COMMIT 100000
LOAD CSV WITH HEADERS FROM "file:///CSV_FILE.csv" as row
MATCH (n:Node {id: row.`:START_ID`})
MATCH (m:Node {id: row.`:END_ID`})
MERGE (n)-[:RELATION]->(m)

这需要很长时间。我尝试在末尾添加LIMIT 1,结果非常快,但是循环本身在第一行之后被中断。相反,做LIMIT 2会使性能下降到糟糕的水平。你知道吗

有没有办法将每个匹配限制为只有一个节点?


Tags: csvidnodereturn节点uuidmatch单位