SQL中的冗余字段

什么是SQL中的冗余字段?
这可以从2个角度来看:

如果是逻辑的角度来看,对SQL的执行结果没有任何影响的字段,就是冗余字段;
如果是需求的角度来看,那些需求没有用到的字段就是冗余字段。

这些字段的存在会增加SQL执行时IO的消耗,降低查询的性能。

这里开发一个清理冗余字段的工具软件,既可以分析SQL语句中冗余字段,也可以根据需求去掉需求不需要的字段,计算出优化后的SQL。

为了更好的对比修改前后的SQL,修改的前后的SQL都做了格式化处理,对于冗余字段添加了备注的标签,并对字段间的逗号分割符做了特殊处理。
http://sqllineage.com/cut

工具只提供了1条SQL的优化结果,但实际数据生产的时候,并不是孤立的一条SQL,而是由多个SQL组成的一个生产过程,一个字段的优化可能会产生一系列的冗余优化过程。

为此提供了一个API接口,调用API接口时,传入需要优化的SQL,返回优化后的SQL。
http://sqllineage.com/i/cut.json
返回结果中,将展示冗余字段的表名和具体字段,当这个表是数据生产链路中另一个SQL的结果时,可以反复调用这个接口,直到所有的SQL都优化完成。

这个接口还是个临时性质的接口,希望能收集大量的测试用例优化算法。

工具还规划了以下优化策略,尽请关注

1.优化select *, 将查询全部字段优化为只包含用到的字段。
2.空表消除,当一个表的所有字段都被标记为冗余字段,抹去这个表在SQL中的影响。
3.谓语下推,在多层递归优化多条SQL的场景下,更早的对数据进行过滤优化性能。
4.归纳多个SQL中公用的中间结果复用,相同的数据逻辑只计算一次。
5.取消排序,在多个结果集数据关联时,只保留对结果顺序有影响的排序子句。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值