關係代數表示式評估說明(DBMS)
SQL 查詢被分解成查詢塊。一個查詢塊包含單個 SELECT-FROM-WHERE 表示式,以及 GROUP BY 和 HAVING 子句(如果有)。巢狀查詢被拆分成單獨的查詢塊。
示例
考慮以下示例:
Select lastname, firstname from employee where salary>(select max(salary) from employee where deptname =CSE ; C=(select max(salary) from employee where deptname=CSE); // inner block Select lastname, firstname from employee where salary>c; //outer block
其中 C 代表從內部塊返回的結果。
內部塊的關係代數為 Ģmax(salary) (σdname=CSE(employee))
外部塊的關係代數為 Πlastname, firstname(σsalary>c(employee))
查詢最佳化器將為每個塊選擇一個執行或評估計劃。
關係代數表示式的評估
**物化評估** - 一次評估一個操作。自下而上地評估表示式並將中間結果儲存到臨時檔案中。
將 A ⋈ B 的結果儲存到臨時檔案中。
將 C ⋈ D 的結果儲存到臨時檔案中。
最後,連線儲存在臨時檔案中的結果。
總成本 = 各個操作的成本總和 + 將中間結果寫入磁碟的成本,將結果寫入臨時檔案並將其讀回的成本相當高。
**流水線評估** - 同時評估多個操作。一個操作的結果傳遞給下一個操作。自下而上地評估表示式,並且不將中間結果儲存到臨時檔案中。
不將 A ⋈ B 的結果儲存到臨時檔案中。相反,結果直接傳遞給與 C 的投影等等。
廣告