在平时工作中我们经常会用到 inner join ,例如现在我有三个表A,B,C 需要进行关联查询
,一般情况下我们是这样
select * from A
inner join B on B.aid = A.id
inner join C on c.bid = B.bid
where A.xx = 'xxxx' and B.xx = 'xxx' and c.xx= 'xxx'
三个表进行关联,然后对关联后的结果集进行筛选
然而也有另外一种写法
select * from A
inner join B on B.aid = A.id and B.xx = 'xxx'
inner join C on c.bid = B.bid and c.xx= 'xxx'
where A.xx = 'xxxx'
这一种写大致上是说先将B和C进行了条件的筛选后再进行关联,这样关联上的数据明显就少了很多,貌似第二种的效率更高,特别是当B,C表后面用了联合索引时似乎会提升很多,但也会有些情况比如当B,C表后面的几个字段没有联合索引的时候,哪个效率更高呢?欢迎大家讨论和讨究.