N1QL查询不使用预期的索引

时间:2016-10-20 11:07:24

标签: couchbase n1ql

我正在尝试创建一个将使用特定索引的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”子句的最后一部分,那么一切正常。

我该怎么办才能修复它?

谢谢!

2 个答案:

答案 0 :(得分:1)

这已在Couchbase 4.5中修复。

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

AND payload.status != "IN_PROGRESS"

答案 1 :(得分:0)

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