求助:关于left join ,group by 及子查询的效率问题
一:from子句中过滤数据后left join 跟 先left join后过滤数据的执行效率比较;
分别举例如下:
test1:
select t1.emp_no,t1.emp_name,t2.dep_no,t2.dep_name
from (
select t.emp_no,t.emp_name,t.dep_no
from employee
where t.emp_no < 80707999
) t1
left join department t2 on t1.dep_no = t2.dep_no
test2:
select t1.emp_no,t1.emp_name,t2.dep_no,t2.dep_name
from employee t1
left join department t2 on t1.dep_no = t2.dep_no
where t1.emp_no < 80707999
二:from子句中先Group by 分组后 left join 跟 先leftjoin 后group by 的执行效率比较;分别举例如下:
test1:
select t2.dep_no,t2.dep_name,t1,empCount,t2.empAvgAge
from(
select t.dep_no, count(t.emp_no) as empCount, avg(t.emp_age) empAvgAge,
from employee t
where t.emp_no < 80707999
group by t.dep_no
)t1
left join department t2 on t1.dep_no=t2.dep_no
test2:
select t2.dep_no,t2.dep_name,count(t1.emp_no) as empCount, avg(t1.emp_age) empAvgAge
from employee t1
left join department t2 on t1.dep_no=t2.dep_no
where t1.emp_no < 80707999
group by t2.dep_no,t2.dep_name
请问一、二中的两句sql分别哪一句效率高??
因本人没有现成的大量数据进行测试且自信心不足,请高手们根据经验给与指点,谢谢!