# 逻辑优化-列剪裁

+ `SELECT name FROM emp WHERE id <  3;`

![left](./student-guide/diagram/16-Column-clipping-01-01.png)

-------------------------------------------------------------
逻辑优化-列剪裁
什么是列裁剪：假设我们的表中有 ID、Name、Address 三列，当我们的查询只涉及到了 name 和 id 列的时候，selection 算子读到 name 列，datasource 用到 id 列，设下的 address 列可以剪裁掉。
在列剪裁的优化方式中，优化器根据逻辑执行计划抽象语法树（AST）的逻辑顺序，自顶向下遍历，当前节点需要的列作为输出，加上父节点所需要的列累积起来反馈给子节点，将所有的节点需要统计的列累加起来，最后到根节点就是返回需要的列。

受到列剪裁影响的算子有：
- Projection 映射操作剪裁不输出的列
- DataSource 数据源剪裁不需要使用的列
- Aggregation 确认使用的列
