一、查詢優化是為處理查詢找出一個好的政策的過程。一個查詢一般有多種方法可以計算出結果,系統負責将使用者輸入的查詢轉換成能夠更有效執行的等價查詢。
複雜的查詢操作涉及多級存取磁盤的操作,由于從磁盤中傳輸資料比從記憶體中要慢得多,是以有必要進行查詢優化,以選擇一個能夠最小化磁盤存取的方法。
有很多等價規則可供将一個表達式轉化成等價表達式,可以使用這些規則系統地産生與所給查詢等價的所有表達式。
選擇查詢處理政策的第一步就是找到一個關系代數表達式,使它與所給的表示是等價并且據估計有更小的執行代價。
二、資料庫系統為執行一個操作所選擇的政策依賴于每個關系的大小和列值的分布情況。資料庫系統可以為每個關系r存儲統計資訊,進而能夠基于這些可靠消息選擇合适的政策。這些統計資訊包括:關系r中的元組數;關系r中的一個記錄的大小;關系r中某個特定屬性中出現的不同取值的數目等。這些統計資訊使得我們可以估計各種操作的結果集的大小和執行操作的代價。當處理一個查詢的過沖中有多個索引可用于輔助的時候,關系的統計資訊特别有用,這些資訊對查詢處理政策的選擇有很大的影響。
三、對于每個表達式,可以用一些等價規則産生多個可選的執行計劃,然後從中選擇代價最小的執行計劃。為了減少需要産生的可選表達式和執行計劃的數量,産生了多種優化技術,比如可以使用啟發式的方法,來減少優化的代價。用于關系代數查詢轉換的啟發式規則包括“及早執行選擇操作”、“及早執行投影操作”、“避免笛卡爾積操作”等。
還可以使用物化視圖來加速查詢處理。當原關系發生修改時,需要用增量的視圖維護來高效地更新物化視圖。利用包含一個操作的輸入的變化量的代數表達式,能夠完成對該操作的變化量的計算。其他與物化視圖相關的問題還包括如何借助物化視圖進行查詢優化和如何選擇需要待物化的視圖。
學習資料:Database System Concepts, by Abraham Silberschatz, Henry F.Korth, S.Sudarshan