博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
第10课:表达式的规范化
阅读量:4074 次
发布时间:2019-05-25

本文共 655 字,大约阅读时间需要 2 分钟。

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

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 这个约束条件的选择率。

在约束条件中,优化器尝试将约束条件进行规范化,主要包括 3 个功能:

  • 简化约束条件;
  • 对树状的约束条件拉平,将形如 A OR (B OR C) 形式的约束条件转换为 OR(A,B,C) 形式;
  • 提取公共项,将形如 (A AND B) OR (A AND C) 转换为 A AND (B OR

转载地址:http://zoyni.baihongyu.com/

你可能感兴趣的文章
Android 9.0 Http不能访问网络
查看>>
Android 9.0 Http不能访问网络
查看>>
Unity编辑器环境在Inspector面板中显示变量
查看>>
苹果IPhone真机开发调试
查看>>
UE4虚幻引擎独立游戏制作教程 UE4编程教学 虚幻引擎4
查看>>
revenue
查看>>
currency
查看>>
iTunes Connect上传APP屏幕快照图片失败 - 您必须上传有效的屏幕快照。
查看>>
receipt
查看>>
[教程] Packt - Create a Game Environment with Blender and Unity by Darrin Lile
查看>>
[教程] Packt - Create a Game Environment with Blender and Unity by Darrin Lile
查看>>
详解Unity Profiler内存分析问题
查看>>
essential
查看>>
k8s安装
查看>>
c++ python 实现AES加密 基于openssl
查看>>
python正则提取mysql中文数据
查看>>
python刷赞
查看>>
python收集网页中的翻页
查看>>
成语接龙
查看>>
python3调用腾讯AI开放平台
查看>>