關係代數表示式評估說明(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, firstnamesalary>c(employee))

查詢最佳化器將為每個塊選擇一個執行或評估計劃。

關係代數表示式的評估

**物化評估** - 一次評估一個操作。自下而上地評估表示式並將中間結果儲存到臨時檔案中。

將 A ⋈ B 的結果儲存到臨時檔案中。

將 C ⋈ D 的結果儲存到臨時檔案中。

最後,連線儲存在臨時檔案中的結果。

總成本 = 各個操作的成本總和 + 將中間結果寫入磁碟的成本,將結果寫入臨時檔案並將其讀回的成本相當高。

**流水線評估** - 同時評估多個操作。一個操作的結果傳遞給下一個操作。自下而上地評估表示式,並且不將中間結果儲存到臨時檔案中。

不將 A ⋈ B 的結果儲存到臨時檔案中。相反,結果直接傳遞給與 C 的投影等等。

更新於:2021年7月6日

9K+ 次瀏覽

啟動您的 職業生涯

完成課程獲得認證

開始學習
廣告