我的意思是,如果我有两个索引:
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个索引?。
提前致谢。
答案 0 :(得分:2)
目前,Neo将仅使用最多一个索引来确定将图表作为查询解析的一部分开始行走的位置。这可能会在未来发生变化。您可以通过USE INDEX给出两个或更多索引中的哪个索引的Neo提示,但此时您无法使用多个索引。
答案 1 :(得分:1)
您可以通过在PROFILE
前添加查询来检查索引是否用于查找节点。
您可以向查询优化器抛出类似这样的提示......
MATCH (a:labelA {idA: valA}), (b:labelB {idB: valB})
USING INDEX a:LabelA(idA)
USING INDEX b:LabelB(idB)
CREATE (a)-[:Rel]->(b)