我想知道是否可以将MATCH限制为Cypher查询中的仅一个节点。
我有数十亿个节点,如果我在比赛中使用限制1,那么会有很大差异:
1)<!DOCTYPE html>
<html>
<head>
<base target="_top">
</head>
<br>
<form>
Details:<br>
<input type="text" name="details">
<br> Quantity:
<br>
<input type="text" name="quantity">
<br><br>
<input type="button" value="Submit" onclick="google.script.run
.withSuccessHandler(google.script.host.close)
.itemAdd(this.parentNode)" />
</form>
</html>
2)MATCH (n:Node) WHERE n.id = "UUID" RETURN n LIMIT 1
(1)以毫秒为单位执行,(2)需要几分钟(我相信它会尝试使用该ID找到所有节点,尽管有唯一索引)。
现在,在一个包含两个两个节点ID的巨大CSV文件中,我希望匹配并创建如下关系:
MATCH (n:Node) WHERE n.id = "UUID" RETURN n
这需要很长时间。我尝试在最后添加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
而且表现会下降到糟糕的水平。
有没有办法将每个匹配限制为只有一个节点?