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

字號:

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