※数据生产优化

◈列裁剪

SQL中的冗余字段是什么?

可以从以下两个角度来看这是个问题。
如果是逻辑的角度来看,去除后对SQL的执行结果没有任何影响的字段就是冗余字段;
如果是需求的角度来看,需求没有用到的字段,也包括哪些为了计算这些字段引用的数据都字段都是冗余字段。
计算这些冗余字段会增加执行时IO的消耗,降低查询的性能,列裁剪就是通过忽略冗余的字段来优化SQL的执行效率。

本站提供了一个✪查找SQL冗余字段工具通过分析获取血缘关系计算出冗余字段。


工具如何使用

1. 查找逻辑冗余的字段,点击  按钮,计算结果就是SQL本身出现的冗余字段。
2. 查找需求冗余的字段,点击  按钮在弹出窗口选择忽略的列,计算结果会标记这两种冗余字段。
为了更好的对比修改前后的SQL,对SQL都做了格式化处理,冗余字段添加了备注的标签。更详细的介绍可以通过工具的帮助获取。


工具还有哪些功能规划

1. 支持select *的优化, 将查询全部字段优化为只包含用到的字段。

2. 空表消除,当一个表的所有字段都被标记为冗余字段,抹去这个表在SQL中的影响。

3. 谓语下推,在多层递归优化多条SQL的场景下,更早的对数据进行过滤优化性能。

4. 归纳多个SQL中公用的中间结果复用,相同的数据逻辑只计算一次。

5. 取消排序,在多个结果集数据关联时,只保留对结果顺序有影响的排序子句。