列裁剪是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关系组欢迎提供给我。对工具有任何改进意见也欢迎微信交流。
相关推荐
`BasicDataSource`是实现`javax.sql.DataSource`接口的一个类,用于创建和管理数据库连接池。通过配置它可以设置连接池的大小、超时时间、验证查询等参数。 3. **commons-pool.jar**:Apache Commons Pool是对象...
SQL.SERVER.2008学习笔记:日常维护、深入管理、性能优化]
标题“com.microsoft.sqlserver.jdbc.SQLServerDriver”涉及的是微软SQL Server数据库与Java应用程序之间的连接驱动。这个驱动程序是Java Database Connectivity (JDBC)的一部分,允许Java开发者通过编写Java代码来...
在实际开发中,我们还会使用到诸如连接池(如C3P0、HikariCP等)和数据源(如`javax.sql.DataSource`)等高级特性,以提高应用的性能和可维护性。 总之,`sqljdbc4-4.0.jar`是连接SQL Server数据库的关键组件,通过...
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: ...
SQL优化器相关知识精品资料 SQL优化器是关系数据库管理系统(RDBMS)中负责生成执行计划的组件。执行计划是指数据库管理系统执行SQL语句的详细步骤。SQL优化器的主要职责是根据SQL语句生成最优的执行计划,以便提高...
MS.SQL.Server.2008.学习笔记:日常维护、深入管理、性能优化.part2.rar; SQLServer; 2008; 维护; 管理; 优化; 第二部分(共两部分)
4. SQL Advisor:SQL 优化建议模块,提供了多种 SQL 优化建议,帮助客户快速优化数据库性能。 5. Log Agent:日志代理模块,负责收集数据库执行日志,用于离线分析和实时诊断。 实时诊断 CloudDBA 智能诊断平台的...
《SQL Server学习手册》与T-SQL优化方案详解 SQL Server 2008作为Microsoft公司的一款企业级数据库管理系统,广泛应用于数据存储、处理和分析。对于任何希望深入理解和掌握SQL Server的人来说,全面了解其基础知识...
在SQL世界中,优化是确保数据库高效运行的关键环节,尤其是对于处理大量数据的企业级应用而言。本主题聚焦于“SQL优化-索引”,这是一项旨在提高查询速度、降低数据库资源消耗的重要技术。以下是对“SQL优化-索引”...
16. SQL 函数:如SQL avg()、SQL count()、SQL first()、SQL last()、SQL max()、SQL min()、SQL sum()、SQL GroupBy、SQL Having、SQL ucase()、SQL lcase()、SQL mid()、SQL len()、SQL round()、SQL now()、SQL ...
"SQL-Optimization.rar_oracle_sql优化"这个压缩包显然聚焦于如何提升Oracle数据库中的SQL语句性能。以下是对SQL优化及其在Oracle环境中的实践进行的详细解释。 一、SQL优化的重要性 SQL语句优化是数据库管理的核心...
第2课:SQL优化简介.pdf 第3课:应用程序跟踪.pdf 第4课:重构SQL基本技术.pdf 第5课:案例分析-星形转换.pdf 第6课:CBO优化程序简介.pdf 第7课:解释执行计划.pdf 第8课:优化程序访问路径.pdf 第9课:优化...
SQL Server驱动包是用于Java应用程序通过JDBC(Java Database Connectivity)接口与Microsoft SQL Server数据库进行交互的必备组件。本文将详细介绍这两个重要的驱动文件——sqljdbc.jar和sqljdbc4.jar,以及如何...
DB2 SQL错误代码是DB2数据库管理系统在处理SQL语句时遇到问题时返回的特定代码,这些代码提供了关于错误性质的详细信息。错误代码通常包括一个三位数字(sqlcode),有时还会伴随着sqlstate,这对于诊断和解决问题至...
因此,了解如何选择合适的索引列、索引类型、创建和维护索引是优化的关键。 7. 表结构设计优化:良好的数据库表结构设计可以减少数据冗余,提升数据查询效率。例如,使用合适的字段类型、避免使用过大的数据类型、...
4. 内存优化:利用内存优化表和列存储索引来提升性能。 通过深入理解和实践这些SQL Server知识点,你将能够更有效地管理和维护数据库系统,解决各种挑战。这份《知识点全集解答.sql》文件很可能包含了以上所述内容...
在SQL Server性能优化的过程中,负载均衡是一个至关重要的概念,尤其对于处理大型数据库的场景。负载均衡旨在有效地分配系统资源,确保服务器性能的稳定性和高可用性,避免单一节点过载,提高整体系统的响应时间和...
5. Oracle SQL优化器:学习Oracle优化器如何选择执行路径和执行操作的顺序,并掌握一些技巧来影响优化器的选择,使优化器选择出更加有效的执行计划。 6. 统计信息的使用:了解Oracle如何根据数据库中的统计信息来...
Oracle 执行计划是 Oracle 数据库中的一种机制,用于优化 SQL 语句的执行效率。执行计划是 Oracle 数据库内部的一种机器级代码,决定如何访问存储器,得到需要的结果集。 执行计划的主要内容包括: 1. 访问方式:...