日期:2014-05-17  浏览次数:20449 次

关键JOIN联合查询的索引使用讨论
例如俩个表 一个是A表 主键AID(A表的索引键) 一个是B表 主键是BID(B表的索引键) A与B的关系是一对多 ,A是B的父表,B是A的子表。

那么如果是联合查询 例如 A JOIN B 条件是 AID = '1' BID = '2' 那么这俩个表的AID 与 BID索引是否发挥作用呢?原理是什么呢 ?

------解决方案--------------------
你这种情况,联合查询索引发挥作用了。

原理,你是指什么意思?索引的原理,还是联合查询使用索引的原理?
------解决方案--------------------
单纯针对你这个代码,有问题,因为你没有真正地join,而是做了笛卡儿积,最起码你要用a的外键和b的主键关联,索引才有效。不然就是做了cross join
------解决方案--------------------
你说的情况等同于
from a join b on 1=1
where a.aid='1' and b.bid='2'

这个可能用到的a.aid的索引,用不到b.bid的索引。
------解决方案--------------------
自己试试就知道了

看执行计划
ctrl+L