ORACLE-017:SQL優化-is not null和nvl

今天在優化一段sql,原腳本大致如下:

select  a.字段n from tab_a a

where

a.字段2 is not null;

a.字段2增加了索引的,但是查詢速度非常慢,

於是做了如下修改:

select  a.字段n from tab_a a

where

nvl(a.字段2,'0' ) != '0';

速度提升很明顯。

原因是什麼呢?其實很簡單,因爲is null和is not null使字段的索引失效了。

雖然都知道哪些情形下會使索引失效,但是有時難免受業務需求的影響而考慮的不夠全面,所以sql優化要時刻進行,隨時進行。努力提高sql的執行效率。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章