Oracle删除重复记录的最好的方法: DELETE FROM EMP E WHERE E.ROWID > (SELECT MIN(y.ROWID) FROM EMP y WHERE y.EMPNO = E.EMPNO )
1、子查询找出某员工最低的ROWID(肯定只有一个),其它大于这条记录ROWID的,全部删除。
2、Oracle中使用ROWID删除重复记录最快,因为Rowid对应这条记录在磁盘上的位置
面试:性能优化
规则:SELECT子句中避免使用 ‘ * ‘ 规则:使用exists语句代替in语句; 使用not exists代替not in 规则:使用truncate代替delete from 表语句 规则:减少访问数据库的次数 规则:减少访问数据库的次数 规则:使用表的别名(Alias) 规则:尽快使用COMMIT 规则:数据库冗余字段的设计 其它:Oracle与性能有关的几个特征(三个缓冲区)
面试:企业为什么经常使用Oracle? Oracle为什么这么牛? 回答:从三个缓冲区入手一、日志缓冲区 ·在添加一条记录时,数据库在后台同时也要记录一条日志 ·Oracle能够先将日志写在内存中,缓冲区满后再一次性写入磁盘 二、块缓冲区 ·如果一个表(如部门表)很少更新但经常使用,那么可以将该表保存在内存中,从而避免频繁访问磁盘。 ·访问内存的速度大于高于访问磁盘的速度。 三、SQL缓冲区 ·数据库执行步骤:语法分析、语义分析、编译、优化…… ·所以SQL在执行以前所消耗的时间是很长的 ·Oracle数据库会将sql保存在SQL缓冲区,如果执行的是相同SQL,则无论执行多少次,都只会编译分析一次。从而减少分析和优化时
间。
