日期:2014-05-19  浏览次数:20563 次

关于 JOIN 语句条件的筛选优化问题
select   a.xx,b.xx   from   a   left   join   b   on   a.id   =   b.id   where   a.id   =   1

select   a.xx,b.xx   from   a   left   join   b   on   a.id   =   b.id   and   a.id   =   1

select   a1.xx,b.xx   from   (select   a.xx   from   a   where   a.id   =   1)   a1   left   join   b   on   a1.id   =   b.id

请问以上三个语句哪个效率高?

------解决方案--------------------
select a.xx,b.xx from a left join b on a.id = b.id and a.id = 1
------解决方案--------------------
为什么?我觉的差不多啊~~~
------解决方案--------------------
第三条的效率更高,下午研究得到的结果
------解决方案--------------------
不敢下结论,关注一下。
------解决方案--------------------
第三条会更高的:
----
第一条是将数据生成后才进行ID=1的筛选
第二条是在查询时进行ID=1的筛选
第三条是先筛选后进行查询
------解决方案--------------------
不太懂,关注...效率问题,没有研究过
------解决方案--------------------
第二条比第一条高
因为实现筛选在联接

------解决方案--------------------
第二条改下就可以先筛选后连接了:
select a.xx,b.xx from a left join b on
( a.id = 1 and a.id = b.id )
------解决方案--------------------
xuexi