左联接效率的问题
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
------解决思路----------------------
一般不提倡子查询