Oracle执行计划是什么?
Oracle执行计划,简而言之,是Oracle为了执行某些SQL而生成的一系列具体的执行步骤。这些步骤由Oracle优化器根据具体的参数、被访问对象的统计信息等内容来生成,并选择其中最优的执行步骤作为该SQL语句的执行计划。执行计划通常以plan_hash_value的...
在数据库的世界中,Oracle执行计划是一个至关重要的概念。对于每一个SQL查询,Oracle都会生成一个详细的执行计划,这个计划描述了数据库如何访问和处理数据,以完成查询任务。今天,我们就来深入探讨一下Oracle执行计划的含义及其种类。
Oracle执行计划是什么?
Oracle执行计划,简而言之,是Oracle为了执行某些SQL而生成的一系列具体的执行步骤。这些步骤由Oracle优化器根据具体的参数、被访问对象的统计信息等内容来生成,并选择其中最优的执行步骤作为该SQL语句的执行计划。执行计划通常以plan_hash_value的形式存放在child_cursor中,而相同SQL文本的执行计划则存放在一个parent_cursor中。当Oracle执行SQL时,它会直接找到相应的执行计划,然后读取相关的数据块到缓存中。
Oracle执行计划有哪些?
Oracle执行计划种类繁多,主要包括表访问的执行计划和表连接的执行计划两大类。
表访问的执行计划:
- Table Access Full:全表扫描,访问表中的每一条记录。
- Table Access By User Rowid:输入源rowid来自于用户指定。
- Table Access By Index Rowid:输入源rowid来自于索引。
- Table Access By Global Index Rowid:全局索引获取rowid,然后再回表。
- Table Access By Local Index Rowid:分区索引获取rowid,然后再回表。
- Table Access Cluster:通过索引簇的键来访问索表。
- External Table Access:访问外部表。
- Result Cache:结果集可能来自于缓存。
- Mat_View Rewrite Access:物化视图。
索引相关的执行计划:
- Index Unique Scan:只返回一条rowid的索引扫描,或者unique索引的等值扫描。
- Index Range Scan:返回多条rowid的索引扫描。
- Index Full Scan:顺序扫描整个索引。
- Index Fast Full Scan:多块读方式扫描整个索引。
- Index Skip Scan:多应用于组合索引中,引导键值为空的情况下索引扫描。
表连接的执行计划:
- Sort Merge Join:排序-合并连接。
- Nested Loops:嵌套循环。
- Hash Join:哈希连接。
- Cartesian Product:笛卡尔积。
这些执行计划为我们提供了优化SQL查询的重要依据。通过查看执行计划,我们可以了解SQL查询的执行顺序、每个步骤的耗费、返回的行数和字节数等关键信息,从而找到性能瓶颈并进行优化。

总之,Oracle执行计划是数据库性能调优的重要工具。了解并善用执行计划,将帮助我们更好地优化SQL查询,提高数据库的性能和响应速度。