我有两张表,一张叫teacherInfo,一张叫departmenInfo两张表有一个相同的字段,叫depnum,两张表都以这个字段建立了索引,可是我执行以下语句时,departmenInfo要进行全表扫描。
SELECT TA.* FROM teacherInfo TA,departmenInfo TB WHERE TA.depnum=TB.depnum1
如果把两个表的位置改改如下,又变成teacherInfo要全表扫描:
SELECT TA.* FROM departmenInfo TB,teacherInfo TA WHERE TA.depnum=TB.depnum1
其实就是放在后面的表总要进行全表扫描。一直想不明白明明两张表都有索引,为什么总有一张表是要进行全表扫描呢?
上网找原因,原来是上面的语句没有筛选条件,TA.depnum=TB.depnum这个条件只是做了表的关联查询,并未提供筛选条件,如果再加一个条件”and depnum=’001’”等筛选条件,索引立即用上了。
记下,用于学习!
————————————————
版权声明:本文为CSDN博主「onebigday」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/onebigday/article/details/50541787