ORACLE执行计划的一些基本概念
Oracle执行计划是数据库管理系统在处理SQL查询时所采用的一种策略,它是优化器根据表的数据分布、索引结构、统计信息等因素生成的详细步骤。理解执行计划对于提高查询性能至关重要。以下是一些关于Oracle执行计划的基本概念: 1. **Rowid**: Rowid是Oracle用来标识表中每行数据的唯一地址,它是一个伪列,虽然在表中不实际存储,但可以通过SQL查询访问。Rowid在行的生命周期内保持不变,即使行发生了物理移动。 2. **Recursive SQL**: 当执行一个SQL语句时,Oracle可能需要执行额外的内部SQL语句,这些就是Recursive SQL,例如更新数据字典或处理触发器。它们是自动进行的,用户无需直接关注。 3. **Row Source**: 行源是指查询过程中由上一个操作返回的满足条件的行集合。它可以是一个完整的表、部分表或者是由两个行源通过连接操作生成的新集合。 4. **Predicate**: Predicate即谓词,是SQL查询中的WHERE子句,用于定义数据筛选的条件。 5. **Driving Table (驱动表)**: 在连接操作中,驱动表是先被访问的表,它影响整个查询的效率。通常,拥有更少行满足查询条件的表会被选为驱动表。 6. **Probed Table (被探查表)**: 被探查表是相对于驱动表而言的,当驱动表的一行数据找到后,Oracle会在被探查表中查找匹配的行。被探查表通常是较大的表,且应有索引以提高连接效率。 7. **组合索引 (Concatenated Index)**: 组合索引由多个列组成,引导列是组合索引的最左侧列。查询时,只有包含引导列的条件才能使用该索引。 8. **可选择性 (Selectivity)**: 可选择性衡量的是一个列中不同值的分布情况。高可选择性的列更适合创建索引,因为它们能更有效地过滤数据。 9. **存取方法**: - **全表扫描 (Full Table Scans, FTS)**:Oracle读取表中的所有行以检查WHERE条件,多块读操作能减少I/O次数,提高性能。 - **索引扫描 (Index Scan)**:直接使用索引来定位数据,分为Unique Index Scan(索引唯一扫描)和Range Scan(索引范围扫描)。 - **索引唯一扫描**:查找索引中的唯一键值。 - **索引范围扫描**:查找索引中满足特定范围的键值。 - **索引快速全扫描 (Index Fast Full Scan)**:读取索引的所有块,但不通过ROWID访问行。 - **位图索引扫描 (Bitmap Index Scan)**:适用于多对多关系,通过位图索引找到相关行。 - **表分区扫描 (Table Partition Scan)**:对于分区表,只扫描满足条件的分区。 优化查询性能通常涉及到选择合适的存取方法、创建有效的索引、调整查询语句的结构等。理解这些基本概念有助于诊断性能问题并采取相应的优化措施。
剩余14页未读,继续阅读
- 粉丝: 0
- 资源: 9
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助