N1QL查询不使用预期的索引

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

我正在尝试创建一个将使用特定索引的couchbase N1QL查询。这是我的索引:

CREATE INDEX index_progressTest ON testbucket(payload.type, payload.display, payload.status, meta(testbucket).id) where payload.type = "Test" AND payload.display = true AND payload.status != "IN_PROGRESS" using GSI;

这是我的查询(我使用explain来查看它将使用哪个索引):

EXPLAIN SELECT meta(jmbucket).id FROM testbucket WHERE payload.type = "Test" AND payload.display = true AND payload.status != "IN_PROGRESS";

但似乎查询不会使用我的索引。如果我从索引和查询中删除“WHERE”子句的最后一部分,那么一切正常。

我该怎么做才能解决这个问题?

谢谢!

couchbase n1ql
2个回答
1
投票

这已在Couchbase 4.5中修复。

如果要使用4.1,请从索引中删除它:

AND payload.status != "IN_PROGRESS"

0
投票

请记住,Couchbase是区分大小写的。确保“创建索引”脚本中指定的列与文档中元素的大小写相匹配。我发现这很困难。 #学过的知识

© www.soinside.com 2019 - 2024. All rights reserved.