第九章 關係查詢處理和查詢優化
關係資料庫管理系統查詢處理階段 : 1. 查詢分析 2. 查詢檢查 3. 查詢優化 4. 查詢執行
選擇操作典型實現方法: (1) 全表掃描方法 (Table Scan) 對查詢的基本表順序掃描,逐一檢查每個元組是否滿足選擇條件,把滿足條件的元組作為結果輸出 適合小表,不適合大表 (2)索引掃描方法 (Index Scan) 適合於選擇條件中的屬性上有索引(例如B+樹索引或Hash索引) 通過索引先找到滿足條件的元組主碼或元組指標,再通過元組指標直接在查詢的基本表中找到元組
連線操作的實現:(1)巢狀迴圈演算法(nested loop join) (2)排序-合併演算法(sort-merge join 或merge join) (3)索引連線(index join)演算法 (4)Hash Join演算法
查詢優化在關係資料庫系統中有著非常重要的地位 關係查詢優化是影響關係資料庫管理系統效能的關鍵因素 由於關係表示式的語義級別很高,使關係系統可以從關係表示式中分析查詢語義,提供了執行查詢優化的可能性
關係代數表示式等價變換規則:代數優化策略:通過對關係代數表示式的等價變換來提高查詢效率 關係代數表示式的等價:指用相同的關係代替兩個表示式中相應的關係所得到的結果是相同的 兩個關係表示式E1和E2是等價的,可記為E1≡E2
常用的等價變換規則: 1.連線、笛卡爾積交換律 設E1和E2是關係代數表示式,F是連線運算的條件,則有 E1 × E2≡E2 × E1 E1 E2≡E2 E1 E1 E2≡E2 E1 2.連線、笛卡爾積的結合律 設E1,E2,E3是關係代數表示式,F1和F2是連線運算的條件 (E1 × E2) × E3≡E1 × (E2 × E3) (E1 E2) E3≡E1 (E2 E3) (E1 E2) E3≡E1 (E2 E3)
3.投影的串接定律 ( (E))≡ (E) E是關係代數表示式 Ai(i=1,2,…,n),Bj(j=1,2,…,m)是屬性名 {A1,A2,…,An}構成{B1,B2,…,Bm}的子集
4.選擇的串接定律 ( (E ))≡ (E) E是關係代數表示式,F1、F2是選擇條件 選擇的串接律說明選擇條件可以合併,這樣一次就可檢查全部條件
5.選擇與投影操作的交換律 σF( (E))≡ (σF(E)) 選擇條件F只涉及屬性A1,…,An。 若F中有不屬於A1,…,An的屬性B1,…,Bm有更一般規則: (σF(E ))≡ (σF ( (E)))
6. 選擇與笛卡爾積的交換律 如果F中涉及的屬性都是E1中的屬性,則 σF(E1×E2)≡σF(E1)×E2 如果F=F1∧F2,並且F1只涉及E1中的屬性,F2只涉及E2中的屬性,則由上面的等價變換規則1,4,6可推出: σF(E1×E2)≡ (E1)× (E2) 若F1只涉及E1中的屬性,F2涉及E1和E2兩者的屬性,則仍有 σF(E1×E2)≡ ( (E1)×E2) 它使部分選擇在笛卡爾積前先做。
7. 選擇與並的分配律 設E=E1∪E2,E1,E2有相同的屬性名,則 σF(E1∪E2)≡σF(E1)∪σF(E2)
8. 選擇與差運算的分配律 若E1與E2有相同的屬性名,則 σF(E1-E2)≡σF(E1)-σF(E2)
9. 選擇對自然連線的分配律 σF(E1 E2)≡σF(E1) σF(E2) F只涉及E1與E2的公共屬性
10. 投影與笛卡爾積的分配律 設E1和E2是兩個關係表示式,A1,…,An是E1的屬性, B1,…,Bm是E2的屬性,則 (E1×E2)≡ (E1)× (E2)
11. 投影與並的分配律 設E1和E2有相同的屬性名,則 (E1∪E2)≡ (E1)∪ (E2)
v代數優化改變查詢語句中操作的次序和組合,不涉及底層的存取路徑 對於一個查詢語句有許多存取方案,它們的執行效率不同, 僅僅進行代數優化是不夠的 物理優化就是要選擇高效合理的操作演算法或存取路徑,求得優化的查詢計劃