Oracle 10G 獲得執行計畫 有1 SQLPLUS 2 PL/SQLDEVELOPER 工具 3 TOAD
2 PL/SQL DEVELOPER
SELECT count(*)FROM user_beh_sum_day_201203 a WHERE a.operid = 1006 AND a.channelid = 12
選擇了這幾個觀察指標分別是
1 Description 說明
2 Depth 深度
3 Object Name 對像
4 Operation 操作
5 Cost 成本
6 Cardinality 基數
7 Filter predicates 過濾謂詞
8 access predicates 儲存謂詞
9 cpu cost CPU 成本
10 io cost IO成本
11 Temp space 暫存資料表空間使用量
12 bytes 數量的大小
重點 2 深度 從這裡可以看出 先執行哪步 ;3 成本 決定了該執行計畫是否被採用;6 基數 就是返回的行數 決定下一步該怎麼辦;7 過濾謂詞 決定哪幾個條件成為過濾不必要的行;8儲存謂詞,又名定位謂詞,就是如何找到資料,這裡看出哪幾個條件參與了定位;11 暫存資料表空間 磁碟排序。
如何看懂執行計畫呢? 關鍵 1說明 2 深度 3 對象 4 操作 這幾個英文組合應該大致瞭解你的SQL怎麼被執行的!
比如上面這個執行計畫來講: 從深度來看 第4步 是最先執行的步驟。該步驟說明是 index fast full scan ; 對象:IDX_USER_BEH_SUM_DAY_201203; 操作 INDEX。
那它先執行索引全掃描工作成本是7 返回基數也就是行數25行 沒有定位條件,過濾條件是A1.OPERID=1006 AND A1.CHANNELID=12。
第2步和第3步都是講全分區訪問
另外說明有PARATITION RANGE SINGLE 表示單分區訪問。
最後一步就是排序操作 因為這裡含有個COUNT(*) 統計函數,很顯然行數比較少,所以在記憶體完成了排序工作。
當如果數量很大的話,這樣的執行計畫是非常慢的。
另外 COST 成本的計算基本上等於IO成本+CPU成本; 基數=訪問對象的行數*選擇率;BYTES=基數*平均行大小。
COST成本訪問對象來分為 單表成本,串連成本,索引成本;
成本大意計算模式=(單塊讀取次數*單塊讀取時間+多塊讀取次數*多塊時間+CPU周期/CPU每秒周期)/單塊讀取時間.