如何强制 Neo4j 使用 2 个索引?

How to force Neo4j to use 2 indexes?

我的意思是,如果我有两个索引:

CREATE INDEX ON :labelA(idA)
CREATE INDEX ON :labelB(idB)

然后我执行以下查询:

MATCH (n:labelA {idA: valA})
MATCH (n:labelB {idB: valB})
CREATE (n)-[:Rel]->(B)

neo4j 只使用其中一个索引吗?如果是,我如何强制 neo4j 使用 2 个索引?

提前致谢。

您可以通过在查询前添加 PROFILE.

来检查索引是否被用于查找节点

您可以向查询优化器发出类似这样的提示...

MATCH (a:labelA {idA: valA}), (b:labelB {idB: valB})
USING INDEX a:LabelA(idA)
USING INDEX b:LabelB(idB)
CREATE (a)-[:Rel]->(b)

目前 Neo 将最多使用一个索引来确定从哪里开始遍历图形作为查询解析的一部分。这在未来很可能会改变。您可以通过 USE INDEX 向 Neo 提示使用 2 个或更多索引中的哪一个,但此时您不能让它使用多个索引。