我有两张表,一张叫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’”等筛选条件,索引立即用上了。
记下,用于学习!