# 构造初始逻辑执行计划

+ 常量折叠
  + `SELECT id, name FROM emp WHERE age > 18 + 6; ——> SELECT id, name FROM emp WHERE age > 24`
+ 表达式简化
  + `SELECT id, name FROM emp WHERE id IS NOT NULL AND id < 1002; ——> SELECT id, name FROM emp WHERE  id < 1002;`
+ 子查询简化
  + `SELECT * FROM t1 WHERE EXIST ( SELECT * FROM t2 WHERE t2.id=t1.id); ——> SELECT * FROM t1 LEFT SEMI JOIN t2 ON t2.id=t1.id;`


-------------------------------------------------------------
构造初始的逻辑执行计划
常量折叠：selection 算子中涉及到的表达式带有常量的函数通过直接计算的方式将结果保存到执行计划里面
```
SELECT id, name FROM emp WHERE age > 18 + 6;
SELECT id, name FROM emp WHERE age > 25;
```
表达式简化：
```
SELECT id, name FROM emp WHERE id IS NOT NULL AND id < 1002;
SELECT id, name FROM emp WHERE  id < 1002;
```
子查询优化： 
```
select * from t1 where exists ( select * from t2 where t2.id=t1.id);  
select * from t1 left semi join t2 on t2.id=t1.id; 
```
