2017-02-16 79 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秒來返回結果,並且當我除去ORDER BY子句它採取只有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

說明「不起作用」。沒有結果?錯誤?仍然很慢?比較慢? –

+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論壇上與您討論過 –