日期:2014-05-17  浏览次数:20862 次

Oracle面试问题汇总

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