2017-02-16 10 views
0
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 секунд, чтобы вернуть результат, а при удалении ОКВЕКА В потребовался только 18 MSCouchbase запросы с 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 LIMIT 10 OFFSET 0 

У меня есть индекс по createdDateTicks и это целое поле.

Я пробовал обходное решение, упомянутое в workaround в качестве последнего комментария, но это не работает.

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

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

План with ORDER BY и План without ORDER BY

+0

Я не вижу какой-либо способ создания индекса с опцией ASC/DESC либо –

+0

Explain «не работает». Нет результатов? Ошибка? Все еще медленно? Помедленнее? –

+0

Опубликуйте свой точный индекс и запрос об обходном пути. – geraldss

ответ

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; 
+0

Мне пришлось форсировать указанный индекс, который будет использоваться. Тем не менее я застрял в исполнении с JOIN, поскольку я обсуждаю с вами на форуме couchbase –

 Смежные вопросы

  • Нет связанных вопросов^_^