两张表联合查询为何没有用上索引?

来源:互联网 发布:正装皮鞋搭配 知乎 编辑:程序博客网 时间:2024/04/19 10:02

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

2 0