我有兩張表,一張叫teacherInfo,一張叫departmenInfo兩張表有一個相同的字段,叫depnum,兩張表都以這個字段建立了索引,可是我執行以下語句時,departmenInfo要進行全表掃描。
SELECT TA.* FROM teacherInfo TA,departmenInfo TB WHERE TA.depnum=TB.depnum
如果把兩個表的位置改改如下,又變成teacherInfo要全表掃描:
SELECT TA.* FROM departmenInfo TB,teacherInfo TA WHERE TA.depnum=TB.depnum
其實就是放在後面的表總要進行全表掃描。一直想不明白明明兩張表都有索引,爲什麼總有一張表是要進行全表掃描呢?
上網找原因,原來是上面的語句沒有篩選條件,TA.depnum=TB.depnum這個條件只是做了表的關聯查詢,並未提供篩選條件,如果再加一個條件”and depnum=’001’”等篩選條件,索引立即用上了。
記下,用於學習!