我在默认存储分区上创建了一个索引:
CREATE INDEX queryIndex on default (customerId, orderState, locationId, timestamps.lastUpdatedDateTime) USING GSI;
这是我的查询:
SELECT orderId FROM default WHERE orderState="Open" and DATE_DIFF_STR(CLOCK_LOCAL(),MILLIS_TO_STR(timestamps.lastUpdatedDateTime),'day') > 10;
由于某些原因,Couchbase无法找到索引。它要求我创建一个。有人可以告诉我我在做什么错吗?
答案 0 :(得分:2)
系统无法将那个索引用于该查询,因为WHERE子句中的字段不是索引中的前导字段。另外,如果您希望将此索引用作覆盖索引(意味着不需要额外提取整个文档),则您在查询中提到的所有字段都必须包含在索引中。
orderState="open"
谓词看起来像是起点。将orderState移到索引中列出的字段的开头。