Couchbase Query с ORDER BY DESC и LIMIT очень медленный

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 мс

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

У меня есть индекс на createDateTicks, и это целочисленное поле.

Я попробовал обходной путь, упомянутый на обходном пути в качестве последнего комментария, но он не работает.

Может кто-нибудь, пожалуйста, посоветуйте?

Индекс:CREATE INDEX asset_createdDateTicks ON ic_v10_mammoet (createdDateTicks) WHERE type = 'asset'

План с ORDER BY и план без ORDER BY

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;
Другие вопросы по тегам