暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

04-优化学习-访问路径

原创 ziyoo0830 2019-10-29
1120

第4章 访问路径(ACCESS PATH)

4.1、常见访问路径

4.1.1、TABLE ACCESS FULL

表示全表扫描,一般情况下是多块读;

HINT:FULL(表名/别名);

等待事件为 db file scattered read ,如果是并行全表扫描,等待事件为direct path read;

Oracle 11g中在对一个大表进行全表扫描的时候,会将表直接读入PGA,绕过buffer cache,事件direct path read 在开启了异步I/O( disk_asynch_io)的情况下统计是不准确的,可以alter system set “_serial_direct_read”=false"禁用direct path read;

db file sequential read 表示单块读;

4.1.2、TABLE ACCESS BY USER ROWID(性能最好)

表示直接用ROWID获取数据,单块读;

4.1.3、TABLE ACCESS BY ROWID RANGE

表示ROWID范围扫描,多块读;

4.1.4、TABLE ACCESS BY INDEX RANGE

表示回表,单块读;

4.1.5、INDEX UNIQUE SCAN

表示索引唯一扫描,单块读;

4.1.6、INDEX RANGE SCAN

表示索引范围扫描,单块读,返回的数据是有序的,默认升序;

HINT:INDEX(表名/别名 索引名)

对唯一索引或者主键进行范围查找,对非唯一索引进行等值查找,范围查找,就会发生INDEX RANGE SCAN。等待事件为 db file sequential read ;

INDEX RANGE SCAN DESCENDING表示索引降序范围扫描;

4.1.6、INDEX SKIP SCAN

表示索引跳跃扫描,单块读,返回的数据是有序的(默认升序);

HINT:INDEX_SS(表名/别名 索引名)

当组合索引的引导列(第一个列)没有在where条件中,并且组合索引的引导列/前几个的列的基数很低,where过滤条件对组合索引中非引导列进行过滤的时候就会发生索引跳跃扫描,等待事件为 db file sequential read ;

当执行计划中出现了INDEX SKIP SCAN,我们可以直接在过滤列上建立索引,使用INDEX RANGE SCAN代替INDEX SKIP SCAN;

4.1.7、INDEX FULL SCAN

表示索引全扫描,单块读,返回的数据是有序的(默认升序);

HINT:INDEX(表名/别名 索引名)

等待事件为db file sequential read 。

4.1.8、INDEX FAST FULL SCAN

表示索引快速全扫描,多块读;

HINT:INDEX_FFS(表名/别名 索引名);

等待事件为db file scattered read,如果是并行扫描,等待事件为 direct path read;

4.1.9、INDEX FULL SCAN(MIN/MAX)

表示索引最小/最大值扫描,单块读;

发生在select max(column) from table 或 select min(column) from table等SQL中;

select (select max(object_id) from t) ,(select min(object_id) from t) from dual ;
复制

4.1.10、MAT_VIEW REWRITE ACCESS FULL

表示物化视图全表扫描,多块读;

4.2、单块读与多块读

从磁盘1次读取1个块到buffer cache就叫单块读,从磁盘1次读取多个块到buffer cache就叫多块读;

一次I/O最多只能读取或者写入1MB数据;

在判断哪个访问路径性能好的时候,通常是估算每个访问路径的I/O次数,谁的I/O次数少,谁的性能就好;

4.3、为什么有时候索引扫描比全表扫描更慢

回表消耗较多的物理I/O;

4.4、DML对于索引维护的影响

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

文章被以下合辑收录

评论

ziyoo0830
关注
暂无图片
获得了112次点赞
暂无图片
内容获得36次评论
暂无图片
获得了180次收藏
TA的专栏
学习笔记-ziyoo0830
收录13篇内容
目录
  • 第4章 访问路径(ACCESS PATH)
    • 4.1、常见访问路径
      • 4.1.1、TABLE ACCESS FULL
      • 4.1.2、TABLE ACCESS BY USER ROWID(性能最好)
      • 4.1.3、TABLE ACCESS BY ROWID RANGE
      • 4.1.4、TABLE ACCESS BY INDEX RANGE
      • 4.1.5、INDEX UNIQUE SCAN
      • 4.1.6、INDEX RANGE SCAN
      • 4.1.6、INDEX SKIP SCAN
      • 4.1.7、INDEX FULL SCAN
      • 4.1.8、INDEX FAST FULL SCAN
      • 4.1.9、INDEX FULL SCAN(MIN/MAX)
      • 4.1.10、MAT_VIEW REWRITE ACCESS FULL
    • 4.2、单块读与多块读
    • 4.3、为什么有时候索引扫描比全表扫描更慢
    • 4.4、DML对于索引维护的影响