阅读oracle的执行计划
执行计划对初学者来说通常比较难以读懂,通常执行计划由里往外读,从缩进最深的操作开始。
通用原则:
1. 首先读缩进最深的语句。
2. 如果两个语句的缩进程度相同,那么上边的语句将会先执行。
例:
1 SELECT STATEMENT
2 SORT ORDER BY
3 NESTED LOOPS
4 NESTED LOOPS
5 TABLE ACCESS BY INDEX ROWID SUBSCRIPTION
6 BITMAP CONVERSION TO ROWIDS
7 BITMAP INDEX FULL SCAN SUBSC_PUB_NAME_IDX
8 TABLE ACCESS BY INDEX ROWID BOOK
9 INDEX UNIQUE SCAN BOOK_ISBN
10 TABLE ACCESS BY INDEX ROWID PAGE
11 INDEX UNIQUE SCAN ISBN_SEQ_IDX
执行顺序:
7à6à9à5à8à11à4à10à3à2à1
1) SUBSC_PUB_NAME_IDX索引上的位图索引完全扫描
2) 位图向ROWID的转换
3) BOOK_ISBN索引上的索引唯一扫描
4) SUBSCRIPTION表上的ROWID访问
5) BOOK表上的ROWID访问
6) ISBN_SEQ_IDX索引上的唯一扫描
7) 结果嵌套循环
8) PAGE表上的ROWID访问
9) 结果嵌套循环
10) 结果排序
11) 输出结果