Or acle 执行计划详解 目录 --- 一.相关的概念 Rowid 的概念 Recursive Sql 概念 Predicate(谓词) DRiving Table(驱动表) Probed Table(被探查表) 组合索引(concatenated index) 可选择性(selectivity) 二.oracle 访问数据的存取方法 1) 全表扫描(Full Table Scans, FTS) 2) 通过ROWID 的表存取(Table Access by ROWID 或rowid lookup) 3)索引扫描(Index Scan 或index lookup)有4 种类型的索引扫描: (1) 索引唯一扫描(index unique scan) (2) 索引范围扫描(index range scan) 在非唯一索引上都使用索引范围扫描。使用index rang scan 的3 种情况: (a) 在唯一索引列上使用了range 操作符(> < <> >= <= between) (b) 在组合索引上,只使用部分列进行查询,导致查询出多行 (c) 对非唯一索引列上进行的任何查询。 (3) 索引全扫描(index full scan) (4) 索引快速扫描(index fast full scan) 三、表之间的连接 1,排序 - - 合并连接(Sort Merge Join, SMJ) 2,嵌套循环(Nested Loops, NL) 3,哈希连接(Hash Join, HJ) 另外,笛卡儿乘积(Cartesian Product) 总结 Oracle 连接方法 Oracle 执行计划总结概述 +++ 一.相关的概念 Rowid 的概念:rowid 是一个伪列,既然是伪列,那么这个列就不是用户定义,而是系统自己给加上的。 对每个表都有一个rowid 的伪列,但是表中并不物理存储ROWID 列的值。不过你可以像使用其它列那样使用它,但是不能删除改列,也不能对该列的值进行 修改、插入。一旦一行数据插入数据库,则rowid在该行的生命周期内是唯一的,即即使该行产生行迁移,行的rowid也不会改变。 Recursive SQL 概念:有时为了执行用户发出的一个sql 语句,Oracle 必须执行一些额外的语句,我们将这些额外的语句称之为''recursive calls''或''recursive SQL statements''.如当一个DDL 语句发出后,ORACLE 总是隐含的发出一些 recursive SQL 语句,来修改数据字典信息,以便用户可以成功的执行该DDL 语句。当需要的数据字典信息没有在共享内存中时,经常会发生 Recursive calls,这些 Recursive calls 会将数据字典信息从硬盘读入内存中。用户不比关心这些 recursive SQL 语句的执行情况,在需要的时候,ORACLE 会自动的在内部执行这些语句。当然DML 语句与 SELECT都...