关系代数表达式评估说明(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+ 次浏览

启动您的 职业生涯

完成课程获得认证

开始学习
广告