使用ORDER BY DESC和LIMIT的Couchbase查询非常慢

时间:2017-02-16 14:14:45

标签: couchbase n1ql

select t.createdDate, t.createdDateTicks from ic_v10_mammoet t where t.type='asset' and t._sync.rev is not null ORDER BY t.createdDateTicks ASC  LIMIT 10 OFFSET 0

上面的查询需要6秒才能返回结果,当我删除ORDER BY子句时,它只需要18 MS

select t.createdDate, t.createdDateTicks from ic_v10_mammoet t where t.type='asset' and t._sync.rev is not null LIMIT 10 OFFSET 0

我在createdDateTicks上有一个索引,它是整数字段。

我尝试了workaround中提到的解决方法作为最后一条评论但不起作用。

有人可以提出建议吗?

索引是:CREATE INDEX asset_createdDateTicks ON ic_v10_mammoet (createdDateTicks) WHERE type = 'asset'

计划with ORDER BY和计划without ORDER BY

1 个答案:

答案 0 :(得分:1)

这是解决方法。

CREATE INDEX idx_neg_date ON docs( -createDateTicks ) WHERE type = 'asset';

SELECT t.createdDate, t.createdDateTicks
FROM docs AS t
WHERE t.type='asset' AND -t.createdDateTicks IS NOT NULL
ORDER BY -t.createdDateTicks ASC LIMIT 10 OFFSET 0;