查詢優化

用於估計代價的目錄信息

n——關係r中的元組數目

b——含有關係r的元組的塊數目

s——關係r中一個元組的大小

f——關係r的塊因子,即一個塊中能存放的關係r的元組數

V(A,r)——關係r中屬性A所具有的不同值的數目。若A爲關係r的碼,V(A,r)即爲n

SC(A,r)——關係r的屬性A的選擇基數。給定關係r及其屬性A,假定至少有一條記錄滿足等值條件,那麼SC(A,r)表示在屬性A上滿足某個等值條件的平均記錄數。

fi——樹形結構索引i的內部節點的平均扇出。

HTi——索引i的層數。平衡樹:HTi=logfi(V(A,r)),散列:HT=1。

LBi——索引i中最底層索引塊數目。

選擇運算

1、線性搜索:n/f。

2、二分法搜索:E=[log2(b)+SC(A,r)/f] - 1。如假設屬性值均勻分佈,則查詢σA=a(r)的SC(A,r)=nr/V(A,r)

利用索引選擇:索引結構提供了定位和存取數據的一條路徑。索引的使用帶來了存取包含索引數據塊的代價。

3、主索引,碼屬性等值比較:E=HT+1

4、主索引,非碼屬性等值比較:E=HT+[SC(A,r)/f]

5、輔助索引,等值比較:最壞情況,每條滿足等值條件的記錄存在於不同的塊上,E=HT+SC(A,r)

6、主索引,比較:E=HT+c/f

7、輔助索引,比較:假定至少有一半記錄滿足條件,則要存取一般的最底層索引塊,並通過索引存取一般數目的文件記錄,囧過從索引根塊到使用的第一個索引塊的一條路徑,E=HT+LB/2+n/2

複雜選擇的實現:

合取:預計對選擇σ(r)的結果大小估計大小爲s,關係中一個元組滿足選擇條件θ的概率爲s/nr。假設個條件相互獨立,則某條記錄滿足全部條件的概率是全體概率的乘積,nr*(s1*s2……*sn)/(nr^n)

析取:1減去條件全不滿足的概率,1-(1-s1/nr)*…*(1-sn/nr)

8、利用一個索引的合取選擇:首先判斷是否存在某個簡單條件中的某個屬性上的一條存取路徑,若存在,用上面的選擇算法之一可以用來檢索滿足改條件的記錄。

9、使用組合索引的合取選擇。

10、通過標識符的交集實現合取選擇:如果條件所涉及的字段上有帶記錄指針的索引,對每個索引進行掃描,獲取那些只想滿足單個條件的記錄的指針,取交集。

11、通過標識符的病機實現析取選擇。

注意考慮索引是否具有聚集特性。

排序

對不能全部放在內存中的關係進行排序稱爲外排序。

外部排序歸併算法:

(M表示內存中用於緩衝的頁面數)

(1)建立多個排序的歸併段文件:

i=0;

repeat

讀入M塊關係數據或剩下的不足M塊數據;

在內存中對關係的這一部分進行排序;

將排好序的數據寫到歸併段文件Ri中;

i=i+1;

until 到達關係末尾

(2)對歸併段文件歸併。爲N個歸併段文件Ri各分配一頁內存緩衝頁,並分別讀入一數據塊

repeat

在所有緩衝頁中按序挑選第一個元組;

把該元組作爲輸出寫出,並將其從緩衝頁中刪除;

if 任何一個歸併段文件Ri的緩衝頁爲空並且沒有到達Ri末尾

then 讀入Ri的下一塊到相應的緩衝頁;

until 所有的緩衝頁均爲空

br(2[logm-1(br/M)]+1)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章