1、Table Access Operations
在Oracle数据库中SQL访问表的数据有2种方式:
TABLE ACCESS FULL、
Full Table Scans
TABLE ACCESS BY ROWID

全表扫描使用多块读,通过参数db_file_multiblock_read_count设置单次IO可以读取的数据块数。
当Oracle服务器使用串行全表扫描读取块时,他们使用least
recently used(LRU)的缓冲区缓存LRU列表。对于parallel(并行)扫描,当查询数据块不在缓冲区时,数据块的读写采用direct I/O方式直接读入子查询进程的PGA中。
如果查询行数较多(超过10%)或使用并行查询时使用全表扫描会比较高效。否则,索引扫描会比较高效。
高水位是表中最后一个使用的数据块。如果删除表中的数据,该表的所有数据块或部分数据块可能为空,但全表扫描仍然会读该块。即全表扫描从高水位以下读取,优化方法,降低高水位。
Table Access by ROWID
先访问索引获取ROWID,然后使用ROWID获取需要的业务数据。
2、Index Access Operations

Index Unique Scan
该索引查询是基于constraints or unique indexes,查询结果为唯一值,或无查询结果。
Index Range Scan
该索引查询是基于所有nonunique index,可能有多个结果返回,使用的谓词查询条件为(for example: BETWEEN, < or >)。
Index
Full Scan
索引全扫描返回排序后的数据,通过CBO判定索引全扫描的访问方法比全表扫描后再排序更
高效,但索引全扫描不能使用多块读。
Index
Fast Full Scan
使用基于CBO时,才会出现Index fast full scan。
只有当至少一个列的索引不为空时,Oracle服务器使用index full scan (否则无法保证所有列会被查询出来)
Index fast full scan
可以使用多块读和并行操作,但不一定会按照顺序返回数据。当索引包含所有需要查询的列时,会使用Index fast full scan。Index fast full scans不返回ROWID,进行回表查询,因为该操作不需要没有意义。
Index skip scan
当查询条件没有指定前导列,并且指定非前导列时出现。Index skip scan在逻辑上将复合索引划分为更小的子索引。逻辑索引分区的数量取决于前导列distinct values数量
。前导列distinct values越小性能越好,否则性能越差。例如,假设您有以下(性别、
EMPLOYEE_ID)索引数据:
(' F ',98)
(' F ',100)
(' F ',102)
(' F ',104)
(' M ',101)
(' M ',103)
(' M ',105)
该索引在逻辑上分为以下两个字索引:
——第一个子索引F键值。
——第二个子索引M键值。
性别列是跳过以下查询:
SQL > select *
2 from employees
3 where employee_id = 101;
不执行完整的索引扫描。相当于以下执行,
首先执行: select * from employees where employee_id = 101 and GENDER='F' ;
然后执行:select * from employees where employee_id = 101 and GENDER='M' ;
编辑推荐:
下一篇:
相关推荐
-
雷神推出 MIX PRO II 迷你主机:基于 Ultra 200H,玻璃上盖 + ARGB 灯效
2 月 9 日消息,雷神 (THUNDEROBOT) 现已宣布推出基于英
-
制造商 Musnap 推出彩色墨水屏电纸书 Ocean C:支持手写笔、第三方安卓应用
2 月 10 日消息,制造商 Musnap 现已在海外推出一款 Oce
热文推荐
- 微课sql优化(10)、关于数据访问方法
微课sql优化(10)、关于数据访问方法
26-03-03 - 微课sql优化(15)、表的连接方法(4)-关于Hash Join(哈希连接)
- DB2备份与恢复
DB2备份与恢复
26-03-03 - 微课sql优化(13)、表的连接方法(2)-基础概念
微课sql优化(13)、表的连接方法(2)-基础概念
26-03-03 - 微课sql优化(14)、表的连接方法(3)-关于Nested Loops Join(嵌套循环)
- Oracle面试宝典-锁篇
Oracle面试宝典-锁篇
26-03-03 - 微课sql优化(16)、表的连接方法(5)-关于Merge Join(排序合连接)
- 微课sql优化(17)、不改代码,优化SQL(1)-优化方法总结
微课sql优化(17)、不改代码,优化SQL(1)-优化方法总结
26-03-03 - Oracle日常问题-坏块修复
Oracle日常问题-坏块修复
26-03-03 - Oracle的并行
Oracle的并行
26-03-03
