文档首页 > > 开发指南> 优化查询性能> 实际调优案例> 案例:改写SQL消除子查询(案例1)

案例:改写SQL消除子查询(案例1)

分享
更新时间: 2019/06/24 09:14

现象描述

select 
    1,
    (select count(*) from customer_address_001 a4 where a4.ca_address_sk = a.ca_address_sk) as GZCS 
from customer_address_001 a;

此SQL性能较差,查看发现执行计划中存在SubPlan,具体如下:

优化说明

此优化的核心就是消除子查询。分析业务场景发现a.ca_address_sk不为null,那么从SQL语义出发,可以等价改写SQL为:

select 
count(*) 
from customer_address_001 a4, customer_address_001 a
where a4.ca_address_sk = a.ca_address_sk
group by  a.ca_address_sk;
说明:

为了保证改写的等效性,在customer_address_001. ca_address_sk加了not null约束。

分享:

    相关文档

    相关产品

文档是否有解决您的问题?

提交成功!

非常感谢您的反馈,我们会继续努力做到更好!

反馈提交失败,请稍后再试!

*必选

请至少选择或填写一项反馈信息

字符长度不能超过200

提交反馈 取消

如您有其它疑问,您也可以通过华为云社区问答频道来与我们联系探讨

跳转到云社区