讀ZLABB 的sql tuning 的筆記

kewin發表於2011-08-10
 sql tuning的基本常識:

不論SQL中讀取多少個表,在執行過程中,每次都是兩個表/
    果集操作,得到新的結果後,再和下一個表/結果集操作,,,
    直到結束。
   
在一個多表關聯的執行計劃中,必須包括這3要素:
*   /物件/資料集的讀取順序( join order )。
*   資料的讀取方法( access path )。
*   /資料的關聯方法(join method)。
     3個要素是判斷執行計劃優秀與否的關鍵。
*   可選擇性(Selectivity) >=0  and <=1
*   預估記錄數(Cardinality) ,表/檢視/操作後的結果集。
*   開銷(Cost) CBO選擇最佳執行計劃的標準:越低越好。

filter是指根據某個條件來過濾資料。
而access根據某個條件或者關係來訪問資料。 (這個我平時還真沒有注意)
關聯條件和過濾條件都是約束條件。

10046事件為何有時沒有執行計劃?

       這是因為該語句在執行後,該語句的遊標沒有關閉,導致沒寫入執行
計劃,可以在執行完該語句後,執行一簡單語句,如:select *  from dual;  
促使之前的遊標結束,即可得到執行計劃資訊。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/40239/viewspace-704604/,如需轉載,請註明出處,否則將追究法律責任。

相關文章