天天看點

2-4:查詢優化

概述

為實作同一查詢需求,有不同查詢邏輯
每個查詢邏輯的每一步驟有多個可選的實作方案
查詢優化的目标是智能選擇出實作查詢需求的查詢邏輯及實作組合而成的最優執行計劃
2-3主要講了每個單個查詢步驟的多種實作方式,及其代價估計.
           
2-4:查詢優化
2-4:查詢優化

關系表達式的轉換

如兩個關系表達式在每一個有效資料庫執行個體中都會産生相同的元組集
稱它們是等價的
           

等價規則

即完成某一計算步驟,有多種方法可以達到相同結果
例如:
E_{1}UE_{2}=E_{2}UE_{1}
其他不一一列舉
           

轉換的例子

若一組等價規則中任意一條規則都不能由其他規則聯合起來導出,
稱這組等價規則集是最小的

在多個步驟構成的複合運算中,通過對中間某些步驟采取更有效率的等價形式,
可以得到更有效的執行方案
           

連接配接的次序

有時在保證等價的前提下,以不同次序執行複合運算代價是不同的
           

等價表達式的枚舉

利用表達式拆分和表達式等價,枚舉出可與原始表達式等價的所有邏輯表達式
           

表達式結果集統計大小的估計

目錄資訊

為了對資料庫操作進行代價估計,需要知道一些統計資訊
如,資料庫目錄常包含
- n_{r},關系r的元組數
- b_{r},含關系r中元組的磁盤塊數
- l_{r},關系r中每個元組的位元組數
- f_{r},一個磁盤塊能容納關系r中元組的個數
- V(A, r),關系r中屬性A中出現的非重複值個數
一般做了一些資料更新操作後,也會定期進行統計資訊的更新
           

選擇運算結果大小的估計

- 對選擇條件,等于固定值的元組個數估計
常采用 元組總數/此屬性在關系中所有取值個數
- 對屬性落在區間内元組個數估計
常采用 元組總數 * [目标區間寬度]/ 屬性在關系上最大寬度
- 合取
對單個選擇估計選擇結果個數,據此得到機率 結果個數/元組總數
元組滿足合取的機率可估計為 所有單個選擇機率積
元組總數*估計的機率即為估計的結果數
- 析取
對單個選擇估計選擇結果個數,據此得到機率 結果個數/元組總數
進而得到不滿足此選擇機率 1 - 結果個數/元組總數
析取機率=1 - 所有單個析取不滿足機率積
元組總數*析取機率即為估計的結果數
- 取反
取反結果數 = 元組總數 - 滿足條件結果數
           

連接配接運算結果大小的估計

- 對笛卡爾積,結果大小為參與運算兩個關系元組數乘積
- 若關系A,B的自然連接配接,B包含A的碼,
則結果不會超過B的元組個數
- 若關系A, B的自然連接配接,A與B包含共同屬性,但共同屬性不構成任意關系的碼
對A的任一進制組,在共同屬性部分有一個取值,按之前統計資訊,
對關系B可取 B的元組總數/B在共同屬性上不同取值個數 來估算此元組産生的自然連接配接結果數
故,整體為 A的元組總數*B的元組總數/B在共同屬性上不同取值個數
           

其他運算的結果集大小的估計

- 投影
估計為投影屬性結合不同取值個數
- 聚集
- 集合運算
并可估算為+
交可估計為-
差可估計為主動方結果數
- 外連接配接
可估計為自然連接配接+外連接配接一方元組數
           

執行計劃選擇

從多個執行計劃中,進行代價評估,
考慮各種因素,選出一個合适的執行計劃的過程
           

繼續閱讀