本文對 SQL 在什么情況下進行全表掃描的問題給出了全面解析,大家在實際運用中可以作個參考。
1:對返回的行無任何限定條件,即沒有where 字句。
2:對數據表與任何索引主列相對應的行限定條件,例如:在City-State-Zip列創建了三列復合索引,那么僅對State有列限定條件不能使用這個索引,因為State不是索引的主列。
3:對索引的主列有限定條件,但是條件在表達式里使用,例如:在City上有索引,但是若使用表達式,如:
以下是引用片段:
where upper(city)='TokYo' 或
City || 'X' like 'TOKYO%',
那么不會使用索引。
4:對索引的主列有限定條件,但是條件或者是Null或者是不相等。例如:在City上有索引,但是若使用表達式,如:
以下是引用片段:
where City is null,where City is
not null,Where city!='TOKYO'.
5: 對索引的主列有限定條件,但是條件使用like操作以及值以‘%’開始或者值是一個賦值變量。例如:
以下是引用片段:
where City like '%YOK%'
where City like: City_bind_Variable xl_rao
新聞熱點
疑難解答