問: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