全表扫描

SELECT JOB_LOG_ID, JOB_GROUP FROM
SYS_JOB_LOG;


图片.png

SELECT /*+ FULL(SYS_JOB_LOG) */ JOB_LOG_ID, JOB_GROUP FROM
SYS_JOB_LOG

图片.png

SELECT JOB_LOG_ID, JOB_GROUP FROM
SYS_JOB_LOG
MINUS SELECT JOB_LOG_ID, JOB_GROUP FROM SYS_JOB_LOG@"DMSF3201_6_1_144_99"

图片.png

SELECT /*+ FULL(SYS_JOB_LOG) / JOB_LOG_ID, JOB_GROUP FROM
SYS_JOB_LOG
MINUS SELECT /
+ FULL(SYS_JOB_LOG) */ JOB_LOG_ID, JOB_GROUP FROM SYS_JOB_LOG@"DMSF3201_6_1_144_99"

图片.png

1、什么是全表扫描?
全表扫描就是扫表表中所有的行,实际上是扫描表中所有的数据块,因为Oracle中最小的存储单位是Oracle block。
扫描所有的数据块就包括高水位线以内的数据块,即使是空数据块在没有被释放的情形下也会被扫描而导致I/O增加。
在全表扫描期间,通常情况下,表上这些相邻的数据块被按顺序(sequentially)的方式访问以使得一次I/O可以读取多个数据块。
一次读取更多的数据块有助于全表扫描使用更少的I/O,对于可读取的数据块被限制于参数

hint 关键字: /+ full(表名)/
一般来说,sql 优化时,尽量走 index,但不绝对
有时候,全表扫描的效率比索引高
'索引' 和 '全表扫描' 的区别:

  1. '索引' 就是 '目录',一本词典使用 '目录' 查字会块些
  2. 但是若只有两页还是一眼扫过去更快些

实际应用:

当查询 sql 时间范围较长时
当 sql 中使用索引(执行计划),还是查询很慢时

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容