列裁剪是SQL优化中最常见的优化规则,就是对于没有用到的列就没必要读取已减少IO的消耗。
为什么出现列裁减?
一、SQL本身就有逻辑问题,包含了与结果无关的数据列:
如:sql1:select a,b from ( select a,b,c from tab1 ) t中SubSelect子查询中的字段c就是可列裁剪的对象。
二、为了复用已有的数据模型设计,但实际的需求只需部分数据字段
一个简单分层数仓每个数据层都设计了特定的数据模型,冗余了多个数据字段便于多业务系统复用,数据需要按照数据模型逐层的生产。而现实的情况是冗余字段造成了不必要的计算资源消耗,特别是实时性要求较高的应用场景。
http://www.sqllineage.com/demo SQL分析工具提供了列裁剪的功能,即可分析SQL本身存在的裁剪对象,也可以主动选择需要忽略的数据列,从而计算出优化的SQL(目前还在努力实现中)。
优化的SQL计划分为2种模式输出:
1.输入是单条SQL,输出等价的SQL 如文中的sql1等价为 select a,b from tab1 (同时应用了投影消除规则)
2.输入是一组SQL(SQL相互依赖,但无循环依赖)模拟多层的数据生产,绘制DAG图,根据结果的列裁剪需求计算出,每条SQL等价的列裁剪SQL。
如下一组SQL:
sql2: create table ODS_TAB as select a,b,c from TAB
sql3: create table DW_TAB as select a*b as num,c from ODS_TAB
sql4: create table APP_TAB as select sum(num) from DW_TAB
等价为:
sql2: create table ODS_TAB as select a,b from TAB
sql3: create table DW_TAB as select a*b as num from ODS_TAB
sql4: create table APP_TAB as select sum(num) from DW_TAB
当然这些例子过于简单,如果您有更复杂的SQL关系组欢迎提供给我。对工具有任何改进意见也欢迎微信交流。
相关推荐
com.microsoft.sqlserver.jdbc.SQLServerException: 只进结果集不支持请求的操作 解决方案
在oracle里面运行一下,解决Exception java.sql.SQLException ORA-00600 内部错误代码
sqljdbc4-4.0.jar Cannot resolve com.microsoft.sqlserver:sqljdbc4:4.0
数据库疑难杂症 java.sql.SQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘order’ at line...
SQL.SERVER.2008学习笔记:日常维护、深入管理、性能优化]
解决Missing artifact com.microsoft.sqlserver:sqljdbc4:jar:4.0问题 所需的sqljdbc4-4.0.jar包
SQL查询语句实用大全(适合SQL的初学者以及经常写SQL的人) (一.属性列操作:) 1.去除重复行: 2.获取置顶行 3.获取函数值: (二.条件项操作:) 1.模糊查询: 2.范围查询: 3.空值查询: 4.子查询 (三.结果集操作...
Microsoft.SQL.Server.2008.学习笔记:日常维护、深入管理、性能优化.part2.rar; 中文版; 第二部分(共两部分)
SQL查询优化教程 SQL查询优化教程
oracle ora-各种常见java.sql.SQLException归纳
该用户与可信 SQL Server 连接无关联。 说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.Data.SqlClient....
SQL Server: com.microsoft.jdbc.sqlserver.SQLServerDriver * 4. DB2: com.ibm.db2.jdbc.app.DB2Driver * 5. Informix: com.informix.jdbc.IfxDriver * 6. Sybase: com.sybase.jdbc.SybDriver * 7. MySQL: ...
MS.SQL.Server.2008.学习笔记:日常维护、深入管理、性能优化.part1.rar; SQLServer; 2008; 维护; 管理; 优化; 第一部分(共两部分)
MS.SQL.Server.2008.学习笔记:日常维护、深入管理、性能优化.part2.rar; SQLServer; 2008; 维护; 管理; 优化; 第二部分(共两部分)
sqljdbc4-4.0.jar下载 《无需积分》,...mvn install:install-file -DgroupId=com.microsoft.sqlserver -DartifactId=sqljdbc4 -Dversion=4.0 -Dpackaging=jar -Dfile=G:\迅雷下载\BB-sqljdbc4-4.0\sqljdbc4-4.0.jar
根据几张表查询出同一个人的多条信息分别用不同的列来显示出来
java.sql.SQLSyntaxErrorException: Unknown column 'name' in 'field list'看上去好像是name这个列是未知的,搞得我一度怀疑我是不是哪个语句写错了,然后修修改改了很久,也在网上找了资料,但是并没有解决我的...
第2课:SQL优化简介.pdf 第3课:应用程序跟踪.pdf 第4课:重构SQL基本技术.pdf 第5课:案例分析-星形转换.pdf 第6课:CBO优化程序简介.pdf 第7课:解释执行计划.pdf 第8课:优化程序访问路径.pdf 第9课:优化...
如果不行再换其它的JDK。 二、如果运行时有以上提示,则选择"Project"菜单中的"Project Properties",在弹出的窗口中左侧选择“ Build-->Java”,在右边的选项中有四个下拉框,就可以看到编译选项了,其中...
针对驱动com.microsoft.sqlserver.jdbc.SQLServerDriver所需的三个jar包。