SQL优化案例分享(一)union和union all

SQL优化技巧
本文介绍了两种SQL查询优化的方法:一是通过使用union替代union all减少子查询中的重复数据;二是当合并多个查询结果时,若能确保数据不重复,则推荐使用union all以提升效率。

#优化前:110s,优化后:0.185s

要善于查看执行计划:unique的cost是最大的,占到了很多。

情形一:子查询中多用union。

我们都知道,最小范围unique可以提高速度,因此在sql子查询中,尽可能避免写union all,如果逻辑上改变不了,那么就改成union先实现内部排重;例子:

select .... from A

  left join (

      (select .... from B)B1  union (select ... from C)C1 on B1.id=C1.id 

   )B2 

     on A.id=B2.id

情形二:非子查询查询结果合并union all要比union 效率高,但是业务上要保证各个部分数据不重复。

例子:

select .... from A

union all

select .... from B

union all

...

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

子涵先生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值