汕头兼职网站建设,搜索优化推广公司,北京一网数据软件有限公司,搜索营销DuckDB优化器之常量折叠与比较简化 本篇文章适合学习C的小伙伴#xff0c;适合阅读开源项目的小伙伴#xff0c;更适合学习数据库的小伙伴#xff0c;欢迎与我一起探索优化器知识。 目录 DuckDB优化器之常量折叠与比较简化1.优化器规则2.表达式重写 2.1 重写/访问算子2.2 应… DuckDB优化器之常量折叠与比较简化 本篇文章适合学习C的小伙伴适合阅读开源项目的小伙伴更适合学习数据库的小伙伴欢迎与我一起探索优化器知识。 目录 DuckDB优化器之常量折叠与比较简化1.优化器规则2.表达式重写 2.1 重写/访问算子2.2 应用规则2.3 子表达式3.比较简化规则 本节以一个SQL为例揭秘DuckDB的优化器常量折叠与比较简化规则。 ConstantFoldingRule 常量折叠ComparisonSimplificationRule 比较简化 示例如下 常量折叠 D explain select temp_lo from weather where temp_lo 45 1;┌─────────────────────────────┐
│┌───────────────────────────┐│
││ Physical Plan ││
│└───────────────────────────┘│
└─────────────────────────────┘
┌───────────────────────────┐
│ SEQ_SCAN │
│ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ │
│ weather │
│ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ │
│ temp_lo │
│ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ │
│ Filters: temp_lo46 AND │
│ temp_lo IS NOT NULL │
│ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ │
│ EC: 0 │
└───────────────────────────┘ // 重写前
temp_lo (45 1)// 重写后
(lldb) p expr-ToString()
temp_lo 46 比较简化 D explain select * from test where CAST(i as TIMESTAMP) 1999-01-01::TIMESTAMP;┌─────────────────────────────┐
│┌───────────────────────────┐│
││ Physical Plan ││
│└───────────────────────────┘│
└─────────────────────────────┘
┌───────────────────────────┐
│ SEQ_SCAN │
│ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ │
│ test │
│ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ │
│ i │
│ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ │
│Filters: i1999-01-01 00:00│
│ :00 AND i IS NOT NULL │
│ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ │
│ EC: 0 │
└───────────────────────────┘ // 重写前
CAST(i as TIMESTAMP) 1999-01-01::TIMESTAMP// 重写后
i 1999-01-01 00:00:00 这两条SQL语句的逻辑算子为 LOGICAL_EXPLAIN-LOGICAL_PROJECT-LOGICAL_FILTER-LOGICAL_GET 顶层是explain然后-表示其child依次类推。 内容已更新至知识星球感兴趣加入即可。