投影下推:减少资源,提升性能
投影下推是一种SQL重写优化技术,它通过移除在外部查询中未使用的列,来优化数据库查询。这不仅减少了IO和网络的负担,还提高了优化器在规划表访问时选择无需回表的优化选项的可能性。
想象一下这个SQL示例:
SELECT count(1)FROM (SELECT c_custkey, ageFROM customerWHERE age >= 18) AS t;
经过PawSQL的魔法,它变成了:
SELECT count(1)FROM (SELECT 1FROM customerWHERE age >= 18) AS t;
c_custkey和
age这两个列就这样被巧妙地移除了!
1. 派生表的自由
旧策略:如果派生表包含分组查询,投影下推就束手无策。譬如如下SQL,原PawSQL优化引擎无法进行投影下推优化,
SELECT count(1)FROM (SELECT date_format(o_orderdate,'yyyy') y,sum(o_totalprice) sumpFROM orders oGROUP BY y) t;
新策略:现在,即使在分组查询中,我们也可以大胆地进行投影下推。
案例:看上面的SQL,现在它也能被优化了!

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

新策略:我们从最外层开始,递归地实施投影重写优化,确保内部查询块能够利用到外层的优化成果。
案例:优化前后的对比,可以看到所有的冗余列都被消除了!

PawSQL往期文章精选
关于PawSQL
文章转载自PawSQL,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




