news 2026/9/2 22:54:32

union 和 union all的区别

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
union 和 union all的区别

1、union和union all

UNION对两个结果集进行并集操作,不包括重复行,相当于使用distinct关键字。而UNION ALL则对两个结果集进行并集操作,包括重复行,即所有结果全部显示,不管是否重复。
UNION操作会去除重复的记录,只返回唯一的记录。而UNION ALL操作则不会去除重复记录,会直接连接所有的值。
UNION操作会按照字段的顺序进行排序,而UNION ALL操作则不会对结果进行排序。因此我们在项目中能用union all的就使用union all,避免union排序去重增加性能。

2、 问题语句

selectcount(*)from(select t1.* from test t1,(select distinct c1 from test1)t2 where t1.c2=t2.c1 union select t1.* from test t1 where t1.c2 is null)tt;

计划:

这个语句实际上并不需要用到union,因为t1.c2=t2.c1这一个条件排除了t1.c2 为空值的情况,而t2中先对c1去重(distinct)也避免了产生重复值,最后求的是t1.*包含了表的主键,主键具有唯一性,因此原本逻辑上不会产生重复值,这样就不用使用union 对结果集去重了。因此可以改写成union all

3、改写

selectcount(*)from(select t1.* from test t1,(select distinct c1 from test1)t2 where t1.c2=t2.c1 union all select t1.* from test t1 where t1.c2 is null)tt

计划:

语句从原来的1.073s提升至0.348s。

4、小结

union有对结果集去重的效果,如果结果集的查询项中列长较长,那么所用的时间也会增加,因此,慎用union。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/21 15:00:59

针对Grok接入美国军方奇点先生分析后给出了三封公开信

X54先生抛出观点: 按人工智能底层是设计不得伤害人类,用在军事不就等于让人工智能给出伤害他国最佳方案吗,他国的人类就不是人类吗?今天可以给出威慑他国方案,明天人工智能就会自己得出结论只要为目标也可以伤害非控制…

作者头像 李华
网站建设 2026/9/3 2:29:21

深度测评自考必备AI论文平台TOP9:选对工具轻松过关

深度测评自考必备AI论文平台TOP9:选对工具轻松过关 2026年自考论文写作工具测评:选对AI平台,提升效率更关键 随着自考人数逐年增长,论文写作成为众多考生面临的“拦路虎”。从选题构思到资料搜集,再到内容撰写与格式调…

作者头像 李华
网站建设 2026/9/3 0:09:28

淘宝 API 生态入门:以商品详情接口为例的平台集成指南

在电商数字化运营的大背景下,淘宝平台提供的 API 接口成为开发者对接淘宝生态、实现商品数据获取、订单管理等核心功能的关键通道。你作为开发者,无论是搭建电商数据分析工具、开发第三方电商管理系统,还是实现自有平台与淘宝的商品数据打通&…

作者头像 李华