数据库中union 与union all 的区别

所属分类: 数据库 / 数据库其它 阅读数: 238
收藏 0 赞 0 分享
今天晚上在操作两个表时才发现两个的区别。呵呵。

union 将两个表连接后删除其重复的项;

union all 将两个表连接都不删除其重复的项。

这个东东很简单。不过也记录一哈 。实在是一个小小的收获。

补充资料:

数据库中,UNION和UNION ALL都是将两个结果集合并为一个,但这两者从使用和效率上来说都有所不同。

UNION在进行表链接后会筛选掉重复的记录,所以在表链接后会对所产生的结果集进行排序运算,删除重复的记录再返回结果。实际大部分应用中是不会产生重复的记录,最常见的是过程表与历史表UNION。如:

select * from users1 union select * from user2
这个SQL在运行时先取出两个表的结果,再用排序空间进行排序删除重复的记录,最后返回结果集,如果表数据量大的话可能会导致用磁盘进行排序。

而UNION ALL只是简单的将两个结果合并后就返回。这样,如果返回的两个结果集中有重复的数据,那么返回的结果集就会包含重复的数据了。
从效率上说,UNION ALL 要比UNION快很多,所以,如果可以确认合并的两个结果集中不包含重复的数据的话,那么就使用UNION ALL,如下:

select * from user1 union all select * from user2
更多精彩内容其他人还在看

在PostgreSQL的基础上创建一个MongoDB的副本的教程

这篇文章主要介绍了在PostgreSQL的基础上创建一个MongoDB的副本的教程,使在使用NoSQL的同时又能用到PostgreSQL中的东西,需要的朋友可以参考下
收藏 0 赞 0 分享

使用Bucardo5实现PostgreSQL的主数据库复制

这篇文章主要介绍了使用Bucardo5实现PostgreSQL的主数据库复制,作者基于AWS给出演示,需要的朋友可以参考下
收藏 0 赞 0 分享

详细讲解PostgreSQL中的全文搜索的用法

这篇文章详细介绍了的PostgreSQL中的全文搜索的用法,包括对全文搜索的一些优化的实现,需要的朋友可以参考下
收藏 0 赞 0 分享

介绍PostgreSQL中的jsonb数据类型

这篇文章主要介绍了介绍PostgreSQL中的jsonb数据类型,jsonb是PostgreSQL9.4中开始内置的类型,能够支持GIN索引,需要的朋友可以参考下
收藏 0 赞 0 分享

介绍PostgreSQL中的Lateral类型

这篇文章主要介绍了介绍PostgreSQL中的Lateral类型,Lateral是PostgreSQL9.3版本以来加入的内置类型,需要的朋友可以参考下
收藏 0 赞 0 分享

mysql、mssql及oracle分页查询方法详解

这篇文章主要介绍了mysql、mssql及oracle分页查询方法,实例分析了数据库分页的实现技巧,非常具有实用价值,需要的朋友可以参考下
收藏 0 赞 0 分享

telnet连接操作memcache服务器详解

这篇文章主要介绍了telnet连接操作memcache服务器详解,本文讲解了连接、添加修改、读取、删除、清空所有缓存等操作命令,需要的朋友可以参考下
收藏 0 赞 0 分享

SQL语句实现删除重复记录并只保留一条

这篇文章主要介绍了SQL语句实现删除重复记录并只保留一条,本文直接给出实现代码,并给出多种查询重复记录的方法,需要的朋友可以参考下
收藏 0 赞 0 分享

50条SQL查询技巧、查询语句示例

这篇文章主要介绍了50条SQL查询技巧、查询语句示例,本文以学生表、课程表、成绩表、教师表为例,讲解不同需求下的SQL语句写法,需要的朋友可以参考下
收藏 0 赞 0 分享

SQL查询出表、存储过程、触发器的创建时间和最后修改时间示例

这篇文章主要介绍了SQL查询出表、存储过程、触发器的创建时间和最后修改时间示例,本文直接给出代码实例,需要的朋友可以参考下
收藏 0 赞 0 分享
查看更多