您好,欢迎访问一九零五行业门户网

Oracle SQL最佳实践

1.用exists代替distinct,消除sort operation 2.如果在group by中过滤数据,在where从句中指定条件比在having从句中有更好
1.用exists代替distinct,,消除sort operation
2.如果在group by中过滤数据,在where从句中指定条件比在having从句中有更好的性能,因为在group之前已经过滤掉数据,因此更少的行被汇总
3.union会对两个select语句的结果集执行一个sort,并消除重复行,成本会昂贵,而union all则不会。因此如果应用能够处理重复,或者确信没有重复记录,那么考虑使用union all代替union
4.能不用union就不要用它
5.为了避免在一个sql语句中混合使用left join和right join产生混淆,应该使用一个一致的视野,例如外连接只使用full or left outer join,忽略掉right outer join
例如:
sql代码
select e.lname, j.function, d.name
from job j left outer join employee e on e.job_id = j.job_id
right outer join department d on e.dept_id = d.dept_id;
select e.lname, j.function, d.name
from job j left outer join employee e on e.job_id = j.job_id
right outer join department d on e.dept_id = d.dept_id;
应该转换为:
sql代码
select e.lname, j.function, d.name
from department d left outer join
(job j left outer join employee e
on e.job_id = j.job_id)
on e.dept_id = d.dept_id;
select e.lname, j.function, d.name
from department d left outer join
(job j left outer join employee e
on e.job_id = j.job_id)
on e.dept_id = d.dept_id;
其它类似信息

推荐信息