兩張表聯合查詢爲何沒有用上索引?

我有兩張表,一張叫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’”等篩選條件,索引立即用上了。
記下,用於學習!

發佈了120 篇原創文章 · 獲贊 100 · 訪問量 109萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章