Neo4j Cypher 查询 DB 命中优化

问题描述 投票:0回答:1

我有以下密码查询:

PROFILE MATCH (p:Profile)  MATCH (v:Vacancy:Decision {id: 17210})
WHERE NOT exists((v)<-[:POSSIBLE_PROFILE]-(p))
RETURN p, v;

我的测试数据库中只有 5000 个配置文件。

计划:

我担心绿色矩形中突出显示的数据库命中数。您能告诉我如何优化这个查询吗?

neo4j cypher query-optimization
1个回答
0
投票

您的查询会在所有 :Profile 节点和 :Vacency:Decision 节点之间创建笛卡尔积,然后从每个节点进行扩展,检查它们是否未连接。

匹配 v 中可能的配置文件,然后匹配所有不是这些的 :Profile 节点可能会更有效。像这样的东西:

PROFILE
MATCH (v:Vacancy:Decision {id: 17210})<-[:POSSIBLE_PROFILE]-(possible)
WITH v, collect(possible) as toExclude
MATCH (p:Profile)
WHERE NOT p IN toExclude
RETURN p, v;
© www.soinside.com 2019 - 2024. All rights reserved.