我目前在处理 Neo4J 请求时遇到性能问题。
这是问题所在。我需要从一个大列表中找到数据库中的用户。为此,uniqCode 必须匹配,或者名称和位置 (zip) 必须匹配。
然后我希望能够将此用户与我创建的节点合并。
下面的查询有效,但对于 30 个用户的列表需要 20 到 30 秒,在实际情况下,需要传递 5000 到 10000 个用户的列表。
我指定我索引了 uniqCode 和用户节点的名称。
UNWIND $users as row
MATCH (u:User)
WHERE u.uniqCode = row.uniqCode
OR (
apoc.text.clean(u.name) = row.name
AND EXISTS ((u)-[:IS]->(:Zip {name:row.zip}))
)
MERGE (u)<-[:IS]-(a:ParallelUser {id:row.uuid, name: u.name, uniqCode: row.uniqCode})
RETURN {name: a.name, uniqCode: a.uniqCode, id: a.id} AS ParallelUser
带参数的样子
[{uniqCode: "1234", name: "John Doe", zip: "1234", uuid: "1234"}, ...]
预先感谢您的帮助...