码迷,mamicode.com
首页 > 数据库 > 详细

01--oracle性能篇笔记

时间:2017-05-15 13:05:25      阅读:216      评论:0      收藏:0      [点我收藏+]

标签:tin   计划   name   个数   sel   行记录   lan   查询   not   

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)来看执行计划

01--oracle性能篇笔记

标签:tin   计划   name   个数   sel   行记录   lan   查询   not   

原文地址:http://www.cnblogs.com/baobao-caicai/p/6855782.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!