2倍速学习网  >  数据库教程  >  Oracle执行计划是什么意思?有哪些?

Oracle执行计划是什么意思?有哪些?

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执行计划是什么意思?有哪些?

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

推荐阅读