Oracle CBO优化模式中索引访问方法详解
12 浏览量
更新于2024-08-28
收藏 91KB PDF 举报
Oracle CBO 优化模式中的 5 种索引访问方法浅析
Oracle 的 Cost-Based Optimizer(CBO)是一种自适应优化器,它可以根据不同的数据分布和查询模式选择最优的执行计划。索引访问方法是 CBO 中的一种重要优化策略,本文将对 CBO 优化模式中的 5 种索引访问方法进行浅析。
索引唯一扫描(INDEX UNIQUE SCAN)
索引唯一扫描是一种高效的索引访问方法,它可以快速地定位到特定的数据行。这种方法通常在查询谓语中使用 UNIQUE 和 PRIMARY KEY 索引的列作为条件时会被选用。索引唯一扫描的特点是对于某个特定的值只返回一行数据,访问的高度总是索引的高度加一,除了某些特殊的情况,如另外存储的 LOB 对象。
例如,在查询谓语中使用 employee_id = 100 时,Oracle 会选择索引唯一扫描,因为 employee_id 是一列 PRIMARY KEY 索引。执行计划如下所示:
Execution Plan
———————————————————-
Plan hash value: 1833546154
———————————————————————————————
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
———————————————————————————————
| 0 | SELECT STATEMENT | | 1 | 69 | 1 (0)| 00:00:01 |
| 1 | TABLE ACCESS BY INDEX ROWID | EMPLOYEES | 1 | 69 | 1 (0)| 00:00:01 |
|* 2 | INDEX UNIQUE SCAN | EMP_EMP_ID_PK | 1 | | 0 (0)| 00:00:01 |
———————————————————————————————
Predicate Information (identified by operation id):
2 - access("EMPLOYEE_ID"=100)
索引范围扫描(INDEX RANGE SCAN)
索引范围扫描是一种常用的索引访问方法,通常在查询谓语中包含范围条件时会被选用。索引可以是唯一的亦可以是不唯一的。所指定的条件可以是 (<, >, LIKE, BETWEEN, =) 等运算符,但是使用 LIKE 时,如果使用了通配符%,极有可能就不会使用范围扫描,因为条件过于宽泛了。
例如,在查询谓语中使用 employee_id > 100 AND employee_id < 200 时,Oracle 会选择索引范围扫描。
索引全扫描(INDEX FULL SCAN)
索引全扫描是一种索引访问方法,它会扫描整个索引以便获取所有的数据。这种方法通常在查询谓语中没有指定任何条件时会被选用。索引全扫描的特点是访问的高度总是索引的高度加一,除了某些特殊的情况,如另外存储的 LOB 对象。
索引跳跃扫描(INDEX SKIP SCAN)
索引跳跃扫描是一种索引访问方法,它可以跳过某些索引块以便快速地定位到特定的数据行。这种方法通常在查询谓语中使用了 NOT EXISTS 或 NOT IN 语句时会被选用。
索引快速全扫描(INDEX FAST FULL SCAN)
索引快速全扫描是一种索引访问方法,它可以快速地扫描整个索引以便获取所有的数据。这种方法通常在查询谓语中没有指定任何条件时会被选用。
Oracle CBO 优化模式中的 5 种索引访问方法各有其特点和应用场景,了解这些方法可以帮助我们更好地优化 SQL 查询语句,提高查询效率。
点击了解资源详情
点击了解资源详情
点击了解资源详情
2021-09-22 上传
2021-01-21 上传
点击了解资源详情
点击了解资源详情
weixin_38610815
- 粉丝: 4
- 资源: 870
最新资源
- Raspberry Pi OpenCL驱动程序安装与QEMU仿真指南
- Apache RocketMQ Go客户端:全面支持与消息处理功能
- WStage平台:无线传感器网络阶段数据交互技术
- 基于Java SpringBoot和微信小程序的ssm智能仓储系统开发
- CorrectMe项目:自动更正与建议API的开发与应用
- IdeaBiz请求处理程序JAVA:自动化API调用与令牌管理
- 墨西哥面包店研讨会:介绍关键业绩指标(KPI)与评估标准
- 2014年Android音乐播放器源码学习分享
- CleverRecyclerView扩展库:滑动效果与特性增强
- 利用Python和SURF特征识别斑点猫图像
- Wurpr开源PHP MySQL包装器:安全易用且高效
- Scratch少儿编程:Kanon妹系闹钟音效素材包
- 食品分享社交应用的开发教程与功能介绍
- Cookies by lfj.io: 浏览数据智能管理与同步工具
- 掌握SSH框架与SpringMVC Hibernate集成教程
- C语言实现FFT算法及互相关性能优化指南