2012-05-29 82 views
1

有了這個WHERE條款的比較:調整兩列對一個整數集

WHERE detail.element_id IN (4, 5, 6, 7, 8) AND 
     (
     detail.additionalelement_id IS NULL OR 
     detail.additionalelement_id IN (4, 5, 6, 7, 8) 
    ) 

我們可以創造什麼樣的指標/目標來優化查詢的性能?
你會如何以更有效的方式重寫此條款?

回答

1

然後在detail(element_id)detail(additionalelement_id)上創建索引並讓postgres決定使用哪一個。

(編輯使用coalesce(detail.additionalelement_id, -1)刪除)

+0

它的工作。 :) +1 – SDReyes

+2

這裏的聚合「訣竅」將阻止優化程序將該索引用於additionaelement_id。原始問題的示例WHERE子句更適合使用索引。 –

+0

是的,我再次測試了一遍。索引做了工作,而不是合併。謝謝波西米亞人和馬修 – SDReyes