首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >PawSQL 投影下推优化功能大升级!

PawSQL 投影下推优化功能大升级!

作者头像
PawSQL
发布于 2024-08-20 12:02:20
发布于 2024-08-20 12:02:20
12700
代码可运行
举报
运行总次数:0
代码可运行

投影下推:减少资源,提升性能

投影下推是一种SQL重写优化技术,它通过移除在外部查询中未使用的列,来优化数据库查询。这不仅减少了IO和网络的负担,还提高了优化器在规划表访问时选择无需回表的优化选项的可能性。

想象一下这个SQL示例:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SELECT count(1) 
FROM (
  SELECT c_custkey, age 
  FROM customer 
  WHERE age >= 18
) AS t;

经过PawSQL的魔法,它变成了:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SELECT count(1) 
FROM (
  SELECT 1 
  FROM customer 
  WHERE age >= 18
) AS t;

看,c_custkeyage这两个列就这样被巧妙地移除了!


🚀功能增强:更灵活,更智能

PawSQL的最新版本对投影下推优化进行了两项重大的功能增强。

1. 派生表的自由

旧策略:如果派生表包含分组查询,投影下推就束手无策。譬如如下SQL,原PawSQL优化引擎无法进行投影下推优化,

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SELECT count(1)
FROM (
   SELECT date_format(o_orderdate,'yyyy') y,
   sum(o_totalprice) sump
   FROM orders o
   GROUP BY y
) t;

新策略:现在,即使在分组查询中,我们也可以大胆地进行投影下推。

案例:看上面的SQL,现在它也能被优化了!

2. 由外向内,层层递进

旧策略:随机遍历查询块,导致优化时可能先内后外,效果不佳。

新策略:我们从最外层开始,递归地实施投影重写优化,确保内部查询块能够利用到外层的优化成果。

案例:优化前后的对比,可以看到所有的冗余列都被消除了!


PawSQL这一系列对投影下推的增强,让其能够覆盖更多类型的查询场景,充分发挥PawSQL引擎的优化作用。期待您的反馈,PawSQL将持续优化,为大家提供高效、智能的SQL查询优化方案!

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-05-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 PawSQL 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
SQL优化案例分享 | PawSQL 近日推出 Lateral Join 重写优化算法
在上文Lateral 查询详解:概念、适用场景与普通 JOIN 的区别中介绍到,Lateral 查询是SQL中的一种连接方式,它允许FROM子句中的子查询引用同一FROM子句中前面的表的列。虽然这种特性提供了强大的表达能力,但在某些场景下可能导致性能问题。PawSQL优化器近日实现了一种针对特定类型Lateral Join的重写优化方案,以提升查询性能。
PawSQL
2025/04/21
1220
SQL优化案例分享 | PawSQL 近日推出 Lateral Join 重写优化算法
PolarDB之后,PawSQL如何进一步优化相关标量子查询?
在SQL的世界里,相关标量子查询(Correlated Scalar Subquery)是一种强大的工具,它允许子查询依赖于外部查询的列值。这与那些独立于外部查询的非相关标量子查询形成鲜明对比。相关标量子查询通过引用外部查询中的列,为每一行数据计算子查询的结果。
PawSQL
2024/09/10
1300
PolarDB之后,PawSQL如何进一步优化相关标量子查询?
索引失效?别慌,PawSQL带你深入了解15种性能优化策略!
在当今数据驱动的世界中,数据库性能至关重要。索引作为数据库管理系统的核心组件,通过精心设计和优化,可大幅提升查询效率,避免全表扫描、排序和回表等耗时操作。然而,当索引失效时,数据库性能可能急剧下降。本文将深入剖析索引的工作机制,揭示索引失效的隐患,并介绍如何利用PawSQL等前沿工具识别和优化索引失效问题,助力数据库管理员和开发者显著提升系统响应速度和稳定性。
PawSQL
2024/08/20
1850
索引失效?别慌,PawSQL带你深入了解15种性能优化策略!
知乎SQL优化挑战赛 - 题目2解析
最近在知乎上发起了一个SQL优化挑战赛,其中题目2用到了多个重写优化算法以及索引创建的策略。本文讲解了详细的优化分析过程,涉及SQL优化的多个方面,包括索引查找、避免回表、驱动表选择、索引避免排序,以及两种重写优化的应用。
PawSQL
2024/08/20
1480
知乎SQL优化挑战赛 - 题目2解析
知乎SQL优化挑战赛 - 题目1解析
最近在知乎上发起了一个SQL优化挑战赛,本文为题目1的解析。其中涉及索引失效,修饰子查询重写等优化知识点,希望对大家在学习优化SQL的过程中有所帮助。
PawSQL
2024/08/20
1570
知乎SQL优化挑战赛 - 题目1解析
高级SQL优化之分组字段顺序优化
如果一个查询中既包含来自同一个表的排序字段也包含分组字段,但字段顺序不同,可以通过调整分组字段顺序,使其和排序字段顺序一致,这样数据库可以避免一次排序操作。
PawSQL
2024/08/20
2200
高级SQL优化之分组字段顺序优化
高级SQL优化之查询折叠
查询折叠指的是把查询中的视图、CTE或是DT子查询展开,并与引用它的查询语句合并,从而减少查询语句的子查询数目,降低其复杂度的一种优化算法。其收益有以下三个方面:
PawSQL
2024/08/20
1630
高级SQL优化之查询折叠
PawSQL优化 | 分页查询太慢?别忘了投影下推!
在进行数据库应用开发中,分页查询是一项非常常见而又至关重要的任务。但你是否曾因为需要获取总记录数的性能而感到头疼?现在,让PawSQL的投影下推优化来帮你轻松解决这一问题!本文以TPCH的Q12为案例进行验证,经过PawSQL的优化后性能提升6000多倍!
PawSQL
2024/08/20
1560
PawSQL优化 | 分页查询太慢?别忘了投影下推!
知乎SQL优化挑战赛题目3解析 - 性能提升500倍的内幕
最近木匠在知乎上发起了一个SQL优化挑战赛,其中题目3用到了OR条件转化为UNION、隐式类型转化导致索引失效、LIMIT子句下推优化三个PawSQL的重写优化算法以及索引创建的策略。
PawSQL
2024/08/20
1770
知乎SQL优化挑战赛题目3解析 - 性能提升500倍的内幕
SQL 子查询怎么优化?写的很深!
子查询 (Subquery)的优化一直以来都是 SQL 查询优化中的难点之一。关联子查询的基本执行方式类似于 Nested-Loop,但是这种执行方式的效率常常低到难以忍受。当数据量稍大时,必须在优化器中对其进行去关联化 (Decoorelation 或 Unnesting),将其改写为类似于 Semi-Join 这样的更高效的算子。
芋道源码
2021/04/20
4K0
窗口函数性能提升50倍,PawSQL索引推荐实战案例
在数据驱动的现代世界,SQL查询的速度是应用程序快速响应的关键。尤其是那些涉及窗口函数的复杂查询,若缺乏恰当的索引支持,性能瓶颈可能会成为阻碍。本文将带您看看PawSQL是如何通过智能索引推荐,帮助一个包含窗口函数的查询性能提升50倍的。
PawSQL
2024/09/14
1290
窗口函数性能提升50倍,PawSQL索引推荐实战案例
高级SQL优化 | 你真的了解用 UNION替换OR吗?
本篇属于高级SQL优化系列专题中的一篇,该专题介绍PawSQL引擎优化算法原理及优化案例,欢迎大家订阅。
PawSQL
2024/08/20
2590
高级SQL优化 | 你真的了解用 UNION替换OR吗?
这可能是最轻量级的列存技术了
列式存储是提高数据分析计算性能的重要手段。如果数据表的总列数很多而计算涉及的列很少,采用列存就只读取需要的列即可,能够减少硬盘访问量,提高性能。而且,同一列数据往往是同一类型的,甚至有些情况取值都很接近,这样的一批数据连续存储,通常可以实施更高效的数据压缩。
朱迪
2025/03/04
950
PawSQL 索引推荐引擎
PawSQL 索引推荐引擎是PawSQL自动化SQL优化平台的核心功能,它支持ANSI标准的DML语法以及其他SQL方言的解析,通过对SQL语句的语法分析,结合表结构定义信息及统计信息,对所有可能的语法组合能推荐出合适的索引,以提升数据库查询性能。
PawSQL
2024/08/20
1620
PawSQL 索引推荐引擎
兼顾高性能与低成本,浅析 Apache Doris 异步物化视图原理及典型场景
在现代化的数据分析场景中,数据量以指数级速度快速膨胀,分析维度在不断扩展,查询逻辑的复杂度也在日益增加。从性能角度考虑,在承担高并发查询的压力下,秒级别甚至更快的响应速度已成为基本需求。同时,面对有限的计算资源,成本及性能如何平衡,严格的资源管控也显得尤为重要。
SelectDB技术团队
2024/11/20
4290
PawSQL独家秘笈:表连接消除优化让SQL性能翻倍
在数据库优化的世界里,有一个鲜为人知但威力巨大的技巧 - 连接消除(Join Elimination)。本文将为您揭示这个可以显著提升SQL查询性能的秘密武器。
PawSQL
2024/08/20
1970
PawSQL独家秘笈:表连接消除优化让SQL性能翻倍
经验分享 | 如何通过SQL获取MySQL对象的DDL、统计信息、查询的执行计划
说明:PawSQL项目开发的过程中,收集了一些对数据库元数据采集的SQL语句,可能对开发人员有某些帮助,在此分享出来,供大家参考,本次分享的是针对MySQL数据库的操作。
PawSQL
2024/08/20
4420
经验分享 | 如何通过SQL获取MySQL对象的DDL、统计信息、查询的执行计划
Impala tpc-h sql optimize
Impala tpc-h sql 优化 因为impala 现在优化器还差点劲,只能手动改改SQL 提升下性能 下期发 impala-kudu 性能优化一个数量级(测试集 TPC-H 1TB) q1_pricing_summary_report.sql EXPLAIN SELECT L_RETURNFLAG, L_LINESTATUS, SUM(L_QUANTITY), SUM(L_EXTENDEDPRICE), SUM(L_EXTENDEDPRICE * (1
jasong
2022/05/12
6210
高级SQL优化系列之分组排序优化
在如何创建高效的数据库索引中,我们说到过,可以通过有序的索引(B+tree)来避免排序操作,从而提升查询的性能。但是如果排序子句或分组子句中的字段来自不同的表,那么数据库优化器就无法利用索引的有序性来避免一次排序操作。
PawSQL
2024/08/20
1810
高级SQL优化系列之分组排序优化
MySQL Cases-SQL导致CPU使用率100%处理
看到这个条SQL写法还是有问题的,我按照他的意思做了改写,我们先分析他要的语句的逻辑
姚崇
2021/09/17
1.2K0
推荐阅读
相关推荐
SQL优化案例分享 | PawSQL 近日推出 Lateral Join 重写优化算法
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档