一、结果集允许重复的话,尽量用 union all 代替 union
【union】不管检索结果有没有重复,都会尝试进行合并,然后在输出最终结果前进行排序、过滤操作,增加大量的 CPU 运算,加大资源消耗及延迟。
【union all】不去重,效率高于 union。当然,union all 的前提条件是两个结果集没有重复数据。或者如果结果集允许重复的话,尽量使用 union all 代替 union 。
二、合并(union all) 两个表并计算表中某个字段的总和

假如表中数据如上表格,查询 a=‘01’ 时 b,c 两个字段的总和,sql语句如下:
select a,sum(b),sum(c) from (
select a,b,c from t1 where a='01'
union all
select a,b,c from t2 where a='01'
) d
group by a;

SQL性能优化:使用UNIONALL替代UNION提升效率
本文探讨了在SQL查询中,当结果集允许重复时,如何通过使用UNIONALL而非UNION来提高查询效率。UNION会去除重复并进行排序,消耗更多资源,而UNIONALL则不进行去重,适合不需要消除重复结果的场景。举例说明了如何合并两个表并计算特定条件下某字段的总和,以此展示UNIONALL的用法。
7309

被折叠的 条评论
为什么被折叠?



