先创建表和索引

create table emp_temp as select * from emp;

create index idx_mgr_temp on emp_temp(mgr);

create index idx_deptno_temp on emp_temp(deptno);

执行sql

select * from emp_temp where mgr>100 and deptno >100;

查看优化器模式:

SQL>  show parameter optimizer_mode;

NAME                                 TYPE        VALUE

------------------------------------ ----------- ------------------------------

optimizer_mode                       string      ALL_ROWS

SQL>  select name, value from v$parameter where name='optimizer_mode';

NAME

--------------------------------------------------------------------------------

VALUE

--------------------------------------------------------------------------------

optimizer_mode

ALL_ROWS

修改

SQL> alter session set optimizer_mode='RULE';  (scott)

SQL> set autotrace traceonly explain;

SQL> select * from emp_temp where mgr>100 and deptno >100;

Execution Plan

----------------------------------------------------------

Plan hash value: 1670750536

-------------------------------------------------------

| Id  | Operation                   | Name            |

-------------------------------------------------------

|   0 | SELECT STATEMENT            |                 |

|*  1 |  TABLE ACCESS BY INDEX ROWID| EMP_TEMP        |

|*  2 |   INDEX RANGE SCAN          | IDX_DEPTNO_TEMP |

-------------------------------------------------------

Predicate Information (identified by operation id):

---------------------------------------------------

1 - filter("MGR">100)

2 - access("DEPTNO">100)

Note

-----

- rule based optimizer used (consider using cbo)

此时如果我们发现走deptno的索引没有mgr的效率高,我们该怎么办?

SQL> select * from emp_temp where mgr>100 and deptno+0>100;

Execution Plan

----------------------------------------------------------

Plan hash value: 2973289657

----------------------------------------------------

| Id  | Operation                   | Name         |

----------------------------------------------------

|   0 | SELECT STATEMENT            |              |

|*  1 |  TABLE ACCESS BY INDEX ROWID| EMP_TEMP     |

|*  2 |   INDEX RANGE SCAN          | IDX_MGR_TEMP |

----------------------------------------------------

Predicate Information (identified by operation id):

---------------------------------------------------

1 - filter("DEPTNO"+0>100)

2 - access("MGR">100)

Note

-----

- rule based optimizer used (consider using cbo)

SQL>

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29674916/viewspace-2132832/,如需转载,请注明出处,否则将追究法律责任。

oracle sql优化指导,基于Oracle的sql优化(1)相关推荐

  1. 如何分表分库 Mycat 与shadingjdbc 区别? Mycat 是基于服务器端的形式实现数据库代理 基于服务器端的形式 改写sql语句 shadingjdbc 基于客户端 改写sql语

    如何分表分库 Mycat 与shadingjdbc 区别? Mycat 是基于服务器端的形式实现数据库代理 基于服务器端的形式 改写sql语句 shadingjdbc 基于客户端 改写sql语句的形式 ...

  2. 解决oracle绑定变量重复,基于ORACLE SQL优化之绑定变量(4)

    绑定变量的使用过程当中,oracle建议绑定变量的个数不宜太多.目标SQL的SQL文本中的绑定变量个数不宜太多,否则可能会导致目标SQL总的执行时间大幅度的增长.增长的时间主要消耗在执行目标SQL时对 ...

  3. oracle his的用法,基于oracle的医院his数据库优化

    基于oracle的医院his数据库优化 康秀谦 [期刊名称]<电脑知识与技术> [年(卷),期]2014(000)014 [摘要]数据库作为信息系统的核心,其稳定.高效的运行,是医院信息系 ...

  4. 基于oracle设计与实现,基于Oracle的高校研究生招生系统设计与实现.doc

    基于Oracle的高校研究生招生系统设计与实现 第 6 卷第 7 期 (2010 年 3 月) Computer Knowledge and Technology 电脑知识与技术 E-mail: HY ...

  5. oracle apex 发布应用,基于Oracle APEX的快速Web应用开发

    随着软件技术的飞速发展和Oracle数据库的广泛应用,许多基于Oracle数据库的Web开发工具应运而生,这些工具给开发人员更加快速.高效.便捷地进行Web应用开发提供了莫大的帮助[1].其中,Ora ...

  6. oracle declare语法_基于oracle数据库存储过程的创建及调用

    教学大纲: PLSQL编程:Hello World.程序结构.变量.流程控制.游标. 存储过程:概念.无参存储.有参存储(输入.输出). JAVA调用存储存储过程. 1. PLSQL编程 1.1. 概 ...

  7. oracle lms进程 内存,基于oracle 10.2.0.1 rac学习lms进程系列四

    背景 之前,我们了解了lmd进程一些概念,这儿我们学习下另一个重要RAC后台进程,LMS进程. 结论 1,如果lms出现故障,会导致dml事务无法提交,即提交或回退hang住;并且远端节点的DML操作 ...

  8. 医院oracle数据使用价格,基于Oracle数据库的医院门诊收费管理系统的构建研究

    基于Oracle数据库的医院门诊收费管理系统的构建研究 [摘要]随着我国医疗水平和服务质量的全面提高,医院业务规模持续扩大,患者到医院就诊的人数也越来越多,医院门诊收费窗口的收费工作承受了巨大压力,人 ...

  9. oracle sql 查询优化器,基于ORACLE成本优化器的SQL查询优化分析与应用

    第 39 卷 第 2 期2018 年 3 月 内蒙古农业大学学报( 自 然 科 学 版 ) Journal of Inner Mongolia Agricultural University ( Na ...

最新文章

  1. 给vim添加自动跳出括号的功能
  2. html_javascript
  3. exxi6.7如何传文件到win7_比QQ直传快100倍!它让PC、安卓、iPhone光速互传文件
  4. EasyUI(前端框架)
  5. [密码学基础][每个信息安全博士生应该知道的52件事][Bristol Cryptography][第9篇]香农对熵和信息的定义是什么?
  6. android界面初始化设计,界面数据初始化及各个按钮功能的实现
  7. C#联通新版验证码识别的实现[转]
  8. scrapy爬虫架构介绍和初试
  9. java memcached incr_Memcached incr/decr 命令
  10. 给项目添加spring的测试单元
  11. iPhone企业应用实例分析之二:程序处理流程
  12. Nginx源码目录介绍
  13. ps制作计算机考试证件照,如何通过PS制作一寸证件照(超详细流程)?
  14. 8、(八)外汇基础篇之外汇期权交易
  15. 京东广告受众基础属性预估
  16. UG基础知识学习视频目录整理(建模篇)
  17. python象棋编程_Python开发象棋小游戏(绘制棋盘)
  18. 职业操盘手的止损法则
  19. Netty私有协议栈 读书笔记
  20. openCV给图片加坐标轴

热门文章

  1. (Docker实战) 第5篇:Centos7 拉取和部署搭建 NEXUS私服
  2. 3行代码实现ftp 上传、下载、删除操作集合
  3. SpringBoot2整合Activiti6工作流框架
  4. Spring 集成 mybatisPlus
  5. 学习笔记之数据可视化(二)—— 页面布局(下)
  6. React之state总结
  7. 皮尔洛和c罗讲什么语言,皮尔洛:如果我跟C罗是队友 我可能能成历史助攻王
  8. php strlen ctf,CTF中的PHP反序列化漏洞简单分析
  9. java怎么设置背景_如何在Java中设置背景图片?
  10. 离散中多重组合是指_PLC编程中如何使用开关、模拟、脉冲量