数据库中union与unionall的区别

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

数据库中union与unionall的区别
今天晚上在操作两个表时才发现两个的区别。

呵呵。

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。

相关文档
最新文档