01--oracle性能篇笔记

1、连接PLSQL显示SQL执行时间
   SQL>SET TIMING ON
   SQL>select * from t_user;
   SQL>select user_name from t_user;
2、避免使用*,具体查询到某列
3、查询部分行的数据,不查询所有的数据,用where romnum<=n order by 某列
4、ROWID高效删除重复记录:
   每一条记录都有一个名为ROWID的列,在整个数据库中是唯一的,确定了每条记录是在Oracle中哪个数据文件、块、行上,删除重复记录,下面为最高效:
   delete from stu s
   where s.rowid>(select min(t.rowid)
   from stu t where t.sno=s.sno)
  
   表中重复记录较多时:
   delete from stu s
   where s.rowid not in (select min(t.rowid)
   from stu t where t.sno=s.sno)
5、高效统计记录行数:
   select table_name,num_rows
   from user_tables
   where table_name='stu';
   注意:user_tables视图中保存了所有用户表基本信息,包括表空间、状态、缓存等
6、多使用commit语句,能释放更多的资源。释放的资源包括:
   (1)回滚段上用于恢复数据的信息
   (2)REDO LOG BUFFER中的空间
   (3)被程序语句获得的锁
7、用EXISTS替代IN谓词,带有EXISTS谓词的子查询不返回任何实际数据,其只产生逻辑真值TRUE或者FALSE
   NOT IN是最低效的[因为对子查询中的表执行了一个全表遍历],所以避免使用not in
8、用>=代替>运算符
9、select语句中避免使用distinct语句[distinct用二重循环查询来实现消除重复记录,这就需要对表中每行记录进行    比较,影响性能]
10、EXPLAIN PLAIN FOR + SQL对该语句进行解释
    select * from table(dbms_xplan.display)来看执行计划

posted @ 2017-05-15 11:56  空白的世界  阅读(111)  评论(0编辑  收藏  举报