# Building The Initial Logical Execution Plan

+ constant folding
  + `SELECT id, name FROM emp WHERE age > 18 + 6; ——> SELECT id, name FROM emp WHERE age > 24` 
+ Expression simplification
  + `SELECT id, name FROM emp WHERE id IS NOT NULL AND id < 1002; ——> SELECT id, name FROM emp WHERE id < 1002;` 
+ Subquery simplification
  + `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;` 


------------------------------------------------------------
Building the initial logical execution plan
Constant folding: expressions involved in the selection operator function with constants save the result in the execution plan by direct calculation
```
SELECT id, name FROM emp WHERE age > 18 + 6;
SELECT id, name FROM emp WHERE age > 25;
```
Expression simplification:
```
SELECT id, name FROM emp WHERE id IS NOT NULL AND id < 1002;
SELECT id, name FROM emp WHERE  id < 1002;
```
Subquery optimization: 
```
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; 
```
