有索引的列優先,都有索引的看查詢出來的數據量,少的優先
in ,not
in,<>,is null,is not null 等由於不會走索引,盡量不要使用。
WHERE子句后面的條件順序對大數據量表的查詢會產生直接的影響,如
Select *
from zl_yhjbqk
where dy_dj = '1K以下' and xh_bz=1
Select *
from zl_yhjbqk
where xh_bz=1 and dy_dj = '1K以下'
以上兩個
SQL
中dy_dj及xh_bz兩個字段都沒進行索引,所以執行的時候都是全表掃描,第一條
SQL的dy_dj = '1KV以下'條件在記錄集內比率為99%,而xh_bz=1的比率只為0.5%,在進行第一條
SQL的時候99%條記錄都進行dy_dj及xh_bz的比較,而在進行第二條SQL的時候0.5%條記錄都進行dy_dj及xh_bz的比較,以此可以得出第二條SQL的
CPU占用率明顯比第一條低。
