1.     减少I/O操作:

SELECT COUNT(CASE WHEN empno>20 THEN 1 END) c1,COUNT(CASE WHEN empno<20 THEN 1 END) c2
FROM emp;
2. 通过rowid访问

SELECT ROWID,emp.* FROM emp
WHERE ROWID=chartorowid('AAAHW7AABAAAMUiAAA')

3.     使用索引唯一扫描

SELECT empno,ename FROM emp
WHERE empno='2000'

4.     使用并连接符号会使oracle忽略使用索用,即使是唯一索引

SELECT empno,ename FROM emp
WHERE empno||ename='2000naem'

改成这样就可使用索引了

SELECT * FROM emp
WHERE empno=2000 AND ename='dd'

5.     索引范围扫描

SELECT * FROM emp
WHERE empno<7000

6 where条件子句的解析顺序是从下到上的

SELECT a.empno,b.dname FROM emp a,dept b
WHERE a.ename<'CLERK'
AND a.deptno=b.deptno;

耗时1.016秒
 
SELECT a.empno,b.dname FROM emp a,dept b
WHERE  a.deptno=b.deptno
AND a.ename<'CLERK';

耗时0.813

7.     使用通配符会使oracle不去使用索引

SELECT ename FROM emp
WHERE ename LIKE '%C%'

应改成

SELECT ename FROM emp
WHERE ename LIKE 'C%'

8.     使用唯一索引查找精确值是最快的,而索引范围扫描比较适合查找>=,<=的数据

SELECT a.itemid
FROM   pt_sche_detail a,
       pt_post_role   b
WHERE  a.itemid = b.taskid
AND    a.docid = 2281
AND    a.itemid != 1169015
AND    a.status != 0
AND    b.posttype = 1
AND    b.roleid = 1022
AND    b.roletype = 1

上面的语句改成:

SELECT a.itemid
FROM   pt_sche_detail a,
       pt_post_role   b
WHERE  a.itemid = b.taskid
AND    a.docid = 2281
AND    a.itemid != 1169015
AND    a.status != 0
AND    b.taskid IN
       (SELECT itemid
         FROM   pt_sche_detail temp
         WHERE  temp.docid = 2281
         AND    rownum <= (SELECT COUNT(itemid) FROM pt_sche_detail temp WHERE temp.docid = 2281))
AND    b.roleid = 1022
AND    b.roletype = 1
AND    b.posttype = 1

转载于:https://www.cnblogs.com/huangf714/p/5876316.html

oracle+SQL优化实例相关推荐

  1. oracle sql语句加速选项,Oracle SQL优化基本步骤

    本空间日志均为一种学习记录. ----------------该文章无法找到原创出自何处.若有侵范,请告知! 最近有尝试做SQL优化.一直不得要领,请逛到这里的高人提供一些优化实例(最好是有优化历程说 ...

  2. oracle sql优化

    (1) 选择最有效率的表名顺序(只在基于规则的优化器中有效): ORACLE的解析器按照从右到左的顺序处理FROM子句中的表名,FROM子句中写在最后的表(基础表driving table)将被最先处 ...

  3. Oracle SQL 优化原则(实用篇)

    由于SQL优化优化起来比较复杂,并且还受环境限制,在开发过程中,写SQL必须遵循以下几点原则: 1.Oracle 采用自下而上的顺序解析WHERE子句,根据这个原理,表之间的连接必须写在其他Where ...

  4. Oracle+SQL优化第二弹

    SQL 语句性能优化(未完待续) 要使 Oracle SQL 语句具有最优的性能,需要从多方面进行优化,下面分别进行说明. 1 选用合适的 ORACLE 优化器 ORACLE 的优化器共有 3 种: ...

  5. Oracle SQL优化准则

    (1)选择最有效率的表名顺序(只在基于规则的优化器中有效): Oracle的解析器按照从右到左的顺序处理FROM子句中的表 名,FROM子句中写在最后的表(基础表 driving table)将被最先 ...

  6. oracle sql 优化分析点

    本文来源:http://www.cnblogs.com/quanweiru/archive/2013/05/24/3096781.html (1)     选择最有效率的表名顺序 ( 只在基于规则的优 ...

  7. Oracle SQL优化 总结(大师级别)

    SQL 的优化主要涉及几个方面: (1)    相关的统计信息缺失或者不准确 (2)    索引问题 (3)    SQL 的本身的效率问题,比如使用绑定变量,批量DML 采用bulk等,这个就考验写 ...

  8. [terry笔记]Oracle SQL 优化之sql tuning advisor (STA)

    https://www.cnblogs.com/kkterry/p/4253265.html 前言:经常可以碰到优化sql的需求,开发人员直接扔过来一个SQL让DBA优化,然后怎么办? 当然,经验丰富 ...

  9. oracle试图执行计划,Oracle SQL优化与调优之显示执行计划(上)

    通过查询语句显示计划 通过查询语句从这些视图里面读出执行计划并作格式化输出的方法都非常相似,我们这里以 sql_plan 为例给出示例. 通过包 DBMS_XPLAN 显示计划 这个包可以根据我们选择 ...

最新文章

  1. [CES 2018] 与联想、小蚁合作,谷歌发布VR180系列VR相机
  2. 计算机汉字救亡运动简史丨视频
  3. Shell脚本:向磁盘中批量写入数据
  4. cadence 常见pcb电阻_从理想到现实,从PCB设计到实际产品,生产制造环节不容忽视……...
  5. linux 串口信息记到日志,[linux学习笔记]之一:ubuntu ch340调试备忘
  6. 有没有发现4G网速越来越慢了?
  7. Angular5--viewChild/viewChildren、contentChild/contentChildren使用规则小结
  8. 小知识-Spring Boot是如何确定当前运行环境
  9. 新趋势下的云计算安全行业前沿认证 | CCSK
  10. 工作说明书SOW(Statement Of Work)
  11. 轻量级cnn网络cv方向总结
  12. 测试工作中比较好用的几款对比工具
  13. 澳拳击袋鼠体型巨大 身高超2米体重近200斤
  14. 02 who——open、read、close
  15. 很火的华为太空表网站源码
  16. java基础(部分)
  17. dlib.get_frontal_face_detector()函数
  18. PDF的查找和替换在哪里?如何全部替换?
  19. MATLAB船舶开尔文尾迹三维仿真建模
  20. 基于SVM的智能家居模拟系统

热门文章

  1. 实时SLAM的未来及深度学习与SLAM对比
  2. 如何在CSDN博客中编辑公式?
  3. RHEL在VM虚拟机下仅主机模式不能联网的解决方法
  4. java中打开的线程怎么关闭_[求助] 用线程怎么关闭运行中的窗口
  5. java根据日期判断星座_根据日期计算星座
  6. 重新配对_郑思维和陈清晨当年配对也很强,为什么被拆开重新和黄雅琼配对
  7. 卸载MySQL Connector NET无法卸载
  8. 012_Vue计算属性
  9. 主要用于收集数据库服务器性能参数,数据库-布布扣-bubuko.com
  10. 自定义控件:视差特效