日期:2014-05-17 浏览次数:20862 次
1:SqL 优化
1:尽量避免使用 select * 查询方式
?因为oracle 在解析过程中 会将*依次转化成所以的列名。
2:减小访问数据库的次数
因为每执行一条sql语句的时候,oracle内部会做许多的事情 如:解析sql ,估算索引的利用效率,绑定变量,读数据块等。因此减小了访问数据库的次
数实际就是减小了oracle的工作量
3:用where前条件查询来代替having后条件查询
因为使用having后条件查询的话,会检索出所以记录之后,才对结果集进行过滤 而使用where前条件查询的话 它首先会通过条件限制了记录的数目,这样减小了开销
4:尽量使用exists代替in 用 not exists 代替 not in
因为在相关子查询中 我们使用 in? 或者 not in 的话,它会执行内部的排序与合并
如 查询一条in(1,2,3,1);它会对这里面的数据进行排序
?无论是那种情况in 或者 not in 是相当的低效的 因为 它还有对子查询相关联的表进行全表遍历,我们可以把in? notin 改成exists 或 notExists
如下面的sql语句:
select * from emp where deptno in (select deptno from
dept where dnmae="jong")
select * from emp where exists(select 1 from dept where emp.deptno =deptno and
dname = 'jong')
5:用Exists代替distinct
因为在相关子查询中distinct