數據庫系統(tǒng)2-7:查詢優(yōu)化的一般準則

字號:

為了提高查詢效率,下面給出改進查詢的有關方法:
    1. 選擇運算盡可能先做
    選擇運算是查詢中出現最頻繁的一種運算,先做選擇運算可大大減少運算中間結果、減少運算量和從外存儲器讀塊的次數,從而可使時間節(jié)約幾個數量級。
    2.在執(zhí)行連接之前先對文件適當地預處理。預處理的方法有:
    a)對文件先做排序
    b)在準備連接的屬性上建立索引
    在連接運算之前,對文件進行預處理,系統(tǒng)能快速有效地找到要連接的元組,從而達到節(jié)約運算時間的目的。雖然建立分類和倒排索引文件需要花費時間,但查詢是一個很普遍的運算,總體上講是合算的。
    3. 同時計算一串投影運算或一串選擇運算,避免分開造成重復掃描文件,以便節(jié)約運算時間。
    4. 把投影同其前或后的雙目運算(∪、-、X、>< )結合起來同時運行,同樣可避免重復掃描文件。
    5. 把某些選擇同它前面要執(zhí)行的乘積結合起來成為一個連接運算,使選擇與乘積一起完成,成為一個有選擇的連接。另一方面避免了再次掃描乘積后容量龐大的中間關系,從而大大節(jié)省運算時間。
    6. 找出公共子表達式,并存貯公共的子表達式。
    若一個反復出現的公共表達式的結果不是一個很大的關系,且從外存讀入它的時間小于計算它的時間時,可將其結果存入外存,以后若遇到該表達式時不必計算而直接將其調出,從而達到節(jié)約操作時間的目的。這種方法對公共子表達式出現頻繁的查詢效果更好。