23.Oracle的访问路径

发布时间 2023-11-02 22:48:20作者: 站在巨人的肩上Z

Oracle的访问路径指的是通过哪种扫描方式获取数据,常见的访问路径主要有如下:

1) table access full

  俗称全表扫描,一般情况下是多块读,等待事件为:db file scattered read,如果是并行全表扫描,等待事件为direct path read.

2) table access by user rowid

  该访问方式是直接用Rowid获取数据,单块读。该访问路径在Oracle所有的访问路径中性能最好

3) table access by rowid range

  表示用rowid范围扫描,多块读,因为同一个块里的rowid是连续的,同一个extent里面的rowid也是连续的,所有可以多块读

4) table access by index rowid

  表示回表,单块读

5) index unique scan

  表示索引唯一扫描,单块读,对唯一索引或者主键列进行等值查找,就会走index unique scan.

6) index range scan

  index range scan 表示索引范围扫描,单块读,返回的数据是有序的(默认升序)。对唯一索引或者主键进行范围查找,对非唯一索引进行等值查找,范围查找,就会发生index range scan,等待事件为db file sequential read.

7) inded skip scan

  index skip scan 表示索引跳跃扫描,单块读,返回的数据是有序的。

8) index full scan

  表示索引全扫描,单块读,返回的数据是有序的,索引全扫描扫描索引中所有的叶子块(从左往右扫描),索引很大,会产生严重性能问题。等待事件为db file sequential read

9) index fast full scan

  表示索引快速全扫描,多块读,当需要从表中查询出大量数据但是只需获取表中部分列的数据,我们可以利用索引快速扫描代替全表扫描来提升性能。