《數(shù)據(jù)庫原理》知識點之查詢優(yōu)化

字號:

2.4.1 關(guān)系代數(shù)表達式的優(yōu)化問題
    考核要求:達到“領(lǐng)會”
    層次知識點:關(guān)系代數(shù)表達式的優(yōu)化問題
    查詢優(yōu)化的目的就是為了系統(tǒng)在執(zhí)行時既省時間又能提高效率。
    在關(guān)系代數(shù)運算中,通常是先進行笛卡爾積或聯(lián)接運算,再進行選擇和投影。笛卡爾積或聯(lián)接運算卻往往花費教多的時間。
    因此,恰當(dāng)?shù)匕才胚x擇、投影和聯(lián)接的順序直接影響到整個操作所需要的時間和空間。 如何安排若干關(guān)系的運算操作步驟,是查詢優(yōu)化所要考慮的問題。
    2.4.2 關(guān)系代數(shù)表達式的等價變換規(guī)則
    考核要求:達到“識記”
    層次知識點:等價變換規(guī)則
    兩個關(guān)系代數(shù)表達式等價是指用同樣的關(guān)系實例代替兩個表達式中相應(yīng)關(guān)系時所得到的結(jié)果是完全一樣的。
    等價變換規(guī)則有很多,不要死記,從語義上理解。
    其實,只要在前面的學(xué)習(xí)中已經(jīng)掌握關(guān)系運算的真正含義,就可以判斷兩個關(guān)系代數(shù)表達式是否等價。
    2.4.3 優(yōu)化的策略
    考核要求:達到“領(lǐng)會”
    層次知識點:優(yōu)化的策略及其簡單應(yīng)用
    優(yōu)化的策略主要有以下幾點:
    (1)在關(guān)系代數(shù)表達式中盡可能早地執(zhí)行選擇操作;
    (2)把笛卡爾積和隨后的選擇操作合并成F聯(lián)接運算;
    (3)同時計算一連串的選擇和投影操作;
    (4)保留同一子表達式的結(jié)果;
    (5)適當(dāng)對關(guān)系文件進行預(yù)處理 ;
    (6)計算表達式之前先估計一下怎么計算合算。
    以上優(yōu)化策略要求會簡單應(yīng)用:先做選擇,運用投影去除多余屬性等等。
    2.4.4 關(guān)系代數(shù)表達式的優(yōu)化算法
    考核要求:達到“簡單應(yīng)用”
    層次知識點:語法樹
    學(xué)會畫語法樹,并掌握優(yōu)化算法。
    舉例
    在教學(xué)數(shù)據(jù)庫S、SC、C中,用戶有一查詢語句:檢索女同學(xué)選修課程的課程名和任課教師名。
    (1)試寫出該查詢的關(guān)系代數(shù)表達式;
    (2)試寫出查詢優(yōu)化的關(guān)系代數(shù)表達式;
    (3)畫出該查詢初始的關(guān)系代數(shù)表達式的語法樹;
    (4)使用2.4.4節(jié)的優(yōu)化算法,對語法樹進行優(yōu)化,并畫出優(yōu)化后的語法樹。