SELECT JOB_LOG_ID, JOB_GROUP FROM
SYS_JOB_LOG;

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

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"

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"

1、什么是全表扫描?
全表扫描就是扫表表中所有的行,实际上是扫描表中所有的数据块,因为Oracle中最小的存储单位是Oracle block。
扫描所有的数据块就包括高水位线以内的数据块,即使是空数据块在没有被释放的情形下也会被扫描而导致I/O增加。
在全表扫描期间,通常情况下,表上这些相邻的数据块被按顺序(sequentially)的方式访问以使得一次I/O可以读取多个数据块。
一次读取更多的数据块有助于全表扫描使用更少的I/O,对于可读取的数据块被限制于参数
hint 关键字: /+ full(表名)/
一般来说,sql 优化时,尽量走 index,但不绝对
有时候,全表扫描的效率比索引高
'索引' 和 '全表扫描' 的区别:
- '索引' 就是 '目录',一本词典使用 '目录' 查字会块些
- 但是若只有两页还是一眼扫过去更快些
实际应用:
当查询 sql 时间范围较长时
当 sql 中使用索引(执行计划),还是查询很慢时