2012-05-29 47 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