第10课:表达式的规范化

本文介绍了数据库查询中表达式规范化的过程,包括简化约束条件、拉平约束条件、提取公共表达式和表达式常量化简。这些步骤有助于提高查询执行效率,减少不必要的运算。例如,优化器会忽略NULL和FALSE,拉平OR操作的树状结构,提取公共因子以提前计算,以及对常量表达式进行预计算,以提升查询性能。
摘要由CSDN通过智能技术生成

我们写一个查询语句,语句中会有投影和约束条件,这些都需要在执行器中进行计算之后才能获得它们的值,这些就是我们所说的表达式,比如:

SELECT a, b+c FROM TEST_A WHERE d > 0;

这样的一个语句中我们说有 3 个表达式:

* 对 a 进行求值的表达式
* 对 b+c 进行求值的表达式
* 对 d > 0 进行求值的表达式

执行器通过 Seq Scan on test_a 表来获得一条元组之后,由于我们已经记录了 a、b、c、d 这些列的编号(也就是它们是表的第几列),因而可以从获得的元组中把 a、b、c、d 对应的值取出来,然后用这些值进行计划,这就是表达式计算的过程。

也就是说每次从 TEST_A 表中取到一条元组,都需要执行一次表达式,它需要先计算 d > 0,如果该元组的确满足 d > 0 的约束条件,然后就需要计算投影,从元组中取出 a 的值作为投影,从元组中取出b、c的值开始计算 b+c 的值来作为投影,如果 TEST_A 表中有 10000 条元组,那么像 d>0 这样的表达式就需要执行 10000 次,而投影中的表达式执行的次数取决于 d>0 这个约束条件的选择率。

在约束条件中,优化器尝试将约束条件

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值