ORACLE优化之执行规划(1) - TABLE FULL SCAN/INDEX FULL SCAN

TABLE FULL SCAN

全表扫描,表示表中所有记录都被访问到。如果表很大,

该操作对查询性能的影响会很大,此时,建议使用索引

或去掉查询中的LIKE操作。

EXPLAIN PLAN

SET statement_id = 'ex_plan1' FOR

SELECT phone_number FROM employees

WHERE phone_number LIKE '650%';

INDEX RANGE SCAN [DESCENDING]  从相关索引中获取了一个或多个ROWID。  当查询条件字段具有非唯一索引,或者查询过滤条件是一个范围,  ORACLE将会采用该操作。    示例:   SELECT * FROM t_employee WHERE id > 11001;   SELECT * FROM t_employee WHERE first_name = 'Tommy';      此例中,id是关键字,first_name具有非唯一索引。   oracle会对此两个索引采用INDEX RANGE SCAN.   INDEX FULL SCAN [DESCENDING]  从相关的索引中获取了所有的ROWID。由于是按索引的顺序访问和获取ROWID,  因此获得的ROWID是直接排过序的。    示例1:   SELECT /*+ INDEX(T_EMPLOYEE IDX_NODES_ID)*/ id from T_EMPLOYEE;     示例中使用了HINT要求强制使用索引查询,但未指定索引字段的过滤条件,   于是ORACLE将采用INDEX FULL SCAN操作。由于该操作按索引顺序或去记录,   因而返回的ID列表是排过序的。    示例2:   SELECT * FROM T_EMPLOYEE WHERE MIDDLE_NAME IS NULL;      当MIDDLE_NAME字段可以为NULL,且具有非唯一索引,ORACLE在执行此语句时,   可能会采用INDEX FULL SCAN操作。   但在某些情况下,比如该语句已经执行过一遍,相关数据已经加载到内存,   那么,ORACLE的执行规划也可能会直接选择TABLE FULL SCAN操作,可能   是ORACLE认为此时直接TABLE FULL SCAN的性能会比INDEX FULL SCAN高。   INDEX FAST FULL SCAN  从相关索引中获取所有的ROWID。该操作同时从多个索引数据块中扫描数据,  所以结果并不是排序的。用于对索引字段进行查询。    示例:SELECT id FROM T_EMPLOYEE;  其中id为表的主键索引字段。     优化策略:  一般情况下,尽量避免FULL SCAN,特别是TABLE FULL SCAN和INDEX FULL SCAN.  在查询大表的情况下,INDEX RANGE SCAN会显著提高查询性能。但在查询小表时,  INDEX可能反而对性能产生不利影响。

oracle full table scan,ORACLE优化之执行规划(1) - TABLE FULL SCAN/INDEX FULL SCAN相关推荐

  1. Oracle案例:index range scan真的不会多块读吗?

    团团圆圆吃汤圆,快快来三连 此次案例来自西安某客户的一次SQL优化,对于优化本身并不复杂,但是发现了一个比较有趣的问题,就是索引范围扫描以及回表都有使用多块读的方式.下面来看看具体案例. SQL文本: ...

  2. 在Oracle中,如何得到真实的执行计划?

    在Oracle中,如何得到真实的执行计划? Oracle查看执行计划的几种方法:http://blog.itpub.net/26736162/viewspace-2136865/ 一.  如何得到真实 ...

  3. oracle sql 执行计划分析_从Oracle数据库实验来看索引的常见执行计划

    概述 今天主要介绍下Oracle索引的常见执行计划: INDEX FULL SCAN:索引的全扫描,单块读,有序 INDEX RANGE SCAN:索引的范围扫描 INDEX FAST FULL SC ...

  4. oracle建立覆盖索引,oracle索引类型及扫描方式大整理

    oracle索引类型及扫描方式大整理 1. 存储类型 索引在各种关系型数据库系统中都是举足轻重的组成部分,其对于提高检索数据的速度起至关重要的作用.在Oracle中,索引基本分为以下几种:B*Tree ...

  5. oracle usenl,深入理解Oracle表(1):ORDERED和USE_NL | 学步园

    ORDERED好理解,就是表示根据 from 后面表的顺序join,从左到右,左边的表做驱动表 use_nl(t1,t2):表示对表t1.t2关联时采用嵌套循环连接,其并不能让优化器确定谁是驱动表或谁 ...

  6. oracle 强制索引 hint,oracle常用hint详解

    相对而言ORACLE优化器已经非常智能,产生的执行计划也是最优的,但是ORACLE还是提供了一些hint供用户显示的控制执行计划,因为大千世界各种各样的业务都有,ORACLE优化器生成的执行计划并不一 ...

  7. oracle添加触发器权限,Oracle 'after create'触发器授予权限

    我有一个'after create on database'触发器,可以在特定模式中为新创建的表提供对不同Oracle角色的select访问 . 如果我执行一个 create table ... as ...

  8. PostgreSQL Oracle 兼容性之 - INDEX SKIP SCAN (递归查询变态优化) 非驱动列索引扫描优化...

    标签 PostgreSQL , Oracle , index skip scan , 非驱动列条件 , 递归查询 , 子树 背景 对于输入条件在复合索引中为非驱动列的,如何高效的利用索引扫描? 在Or ...

  9. oracle 优化器之执行计划

    什么是执行计划 执行计划显示了执行一个sql语句所需步骤的详细信息.这些步骤代表了一组数据库操作它们会消费和生产行数据.这些操作的顺序以及它们的实现取决于查询优化器对查询转换和物理优化技术的联合使用. ...

最新文章

  1. 【嵌入式开发】ARM 芯片简介 (ARM芯片类型 | ARM处理器工作模式 | ARM 寄存器 | ARM 寻址)
  2. 初识github之注册和基本概念
  3. yunos5 linux内核,魅蓝5S、魅蓝5对比看差异 选Android还是YunOS?
  4. 前端获取后端传来的session_用java编写一个web程序,登陆后,把用户信息放在session中,前端怎样获取session的值?...
  5. pythonrequests查询_Python Requests实例,查询成绩
  6. 量化交易模型只是武器,能否驾驭,靠的是背后的人
  7. HashMap头插法
  8. 汽水分离再热器的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  9. C语言中数据的表现形式及其运算
  10. 用 HLS m3u8 及FFMPEG搭建视频点播平台
  11. 图形化管理工具Portaniner安 以及 Docker镜像详解(三)
  12. ETC脱落后如何重新线上激活
  13. 首涂第八套苹果CMSv10自适应视频模板原创4种颜色风格一键切换
  14. 【2019/07/20测试 T2】切题
  15. IAR 中的 Fatal Error[Lc002]: could not open file 解决办法
  16. 多示例学习距离度量 (distance measures)和集合核 (set-kernel)
  17. C#调用百度翻译API
  18. 400+人支持的技能树又又又更新了,来看看对我们的学习有没有帮助呢?Python技能树评测
  19. 输出所有的水仙花数(java语言编写)
  20. webmatrix如何使用php,用微软的webmatrix配置PHP网站

热门文章

  1. StopWatch工具
  2. mysql 实验7,MySQL5.7多源复制的实验
  3. mysql 类似plsql 软件_推荐一款PG数据库管理工具——pgadmin,一款类似PLSQL的工具...
  4. 6种常用Bean拷贝工具一览
  5. Spring中 BeanFactory 与 FactoryBean 的区别
  6. matlab rgb2ntsc函数,matlab 颜色模型之间的转换
  7. 学习布局——getContentPane() setContentPane()
  8. ubuntu lvm mysql vg_使用LVM快照做mysql完全备份和lvm的扩容
  9. Windows 7系统快捷键汇总
  10. springboot整合dubbo\zookeeper做注册中心