交貨表有1731791+行。 具有0,1,NULL值的homedl列。NVL()降低性能
我要取的記錄,每當homedl列不等於1
哪個查詢將在這裏給出最佳的性能
select homedl
from delivery
where item_id='1343275'
AND NVL(homedl,0) <> 1
and item_type=0;
OR
select homedl
from delivery
where item_id='1343275'
AND (homedl<>1 or homedl is null)
and item_type=0;
只需檢查執行計劃,也許? –
您是否嘗試過運行並查看性能並解釋計劃?如果你在item_id上有一個索引,那麼它應該是無關緊要的。 –
查詢計劃是否有所不同?我期望這兩個查詢產生相同的計劃,並因此執行相同的操作。如果'homedl'上有索引,則使用函數或查找NULL值可能會阻止索引被使用。如果您聲明自己的性能不佳,那麼我會懷疑添加'NVL'會阻止使用索引,通過創建基於函數的索引可以彌補索引的不足。 –