使用索引,查询中的其他字段被忽略
Index used, other field in query gets ignored
我在集合 "coll2" 的字段 "a,b[*]" 上有一个非唯一的非稀疏哈希索引。当我在子查询中查询此集合时:
FOR r IN coll
RETURN COUNT(
FOR rr IN coll2
FILTER rr.a == true &&
r.id IN rr.b &&
r.id IN rr.c
RETURN null
)
我得到的结果好像字段 c 上的过滤器被忽略了。解释查询确认使用了我的哈希索引。如果我在字段 "a,b[*],c[*]" 上创建另一个非唯一非稀疏哈希索引,则结果符合预期并且解释查询确认使用了我的新索引。
我可以确认它在直接查询 coll2 时不会这样做,即使有两个字段索引。解释查询表明,在这种情况下,它将使用两个字段索引,然后为不在索引中的字段创建一个过滤器作为简单表达式。是错误吗?
这是一个错误。这是 github https://github.com/arangodb/arangodb/issues/4900
上的参考
我在集合 "coll2" 的字段 "a,b[*]" 上有一个非唯一的非稀疏哈希索引。当我在子查询中查询此集合时:
FOR r IN coll
RETURN COUNT(
FOR rr IN coll2
FILTER rr.a == true &&
r.id IN rr.b &&
r.id IN rr.c
RETURN null
)
我得到的结果好像字段 c 上的过滤器被忽略了。解释查询确认使用了我的哈希索引。如果我在字段 "a,b[*],c[*]" 上创建另一个非唯一非稀疏哈希索引,则结果符合预期并且解释查询确认使用了我的新索引。
我可以确认它在直接查询 coll2 时不会这样做,即使有两个字段索引。解释查询表明,在这种情况下,它将使用两个字段索引,然后为不在索引中的字段创建一个过滤器作为简单表达式。是错误吗?
这是一个错误。这是 github https://github.com/arangodb/arangodb/issues/4900
上的参考