当前位置: 代码迷 >> Oracle开发 >> 左联接效率的有关问题
  详细解决方案

左联接效率的有关问题

热度:78   发布时间:2016-04-24 06:36:41.0
左联接效率的问题
左联接效率的问题
2个表 tab_a,tab_b
tab_a的字段
id  主键
xm
xb

tab_b字段
id 主键
mz 

tab_a表比tab_b数据多
方法1
select tab_a.id,xm,xb,mz from tab_a left  outer join tab_b on tab_a.id=tab_b.id ;
方法2
select  id,xm,xb,(select mz from tab_b where tab_a.id=tab_b.id)  mz  from  tab_a;

请问这两种方法,那个查询速度更快.
------解决思路----------------------
关联的写法应该会更快一点
在select子句中的子查询一般会全表遍历的
具体可查看两种写法的执行计划
一切以最终的查询计划为准
------解决思路----------------------
由于tab_b表数据量不是太大,速度的差异应该不会太明显
------解决思路----------------------
可以试试下面的方法,应该比这两种都要快
select id,max(xm) xm,max(xb) xb,max(mz) mz from(
select id,xm,xb,null mz from table_a
union all
select id,null,null,mz from table_b)
group by id

------解决思路----------------------
一般不提倡子查询
  相关解决方案