union 居然排序了

来源:互联网 发布:山雨优化阅读答案 编辑:程序博客网 时间:2024/04/26 07:51
 
UNION理解
select * from A
union
select * from B
此处用UNION  如果用 * 号的话,A B 中的列的列数要一致方可以。
如果不一致的话,会出现下列错误:
使用 UNION、INTERSECT 或 EXCEPT 运算符合并的所有查询必须在其目标列表中有相同数目的表达式。
 

下面我们来了解下UNION和UNION ALL的区别

在数据中,UNIONUNION ALL关键字都是将两个果集合并一个,但两者从使用和效率上来都有所不同。

UNION行表接后会筛选掉重记录,所以在表接后会生的果集行排序运算,除重记录再返回果。实际大部分用中是不会生重记录,最常的是程表与史表UNION

如: select * from test union select * from test_bkSQL在运行先取出两个表的果,再用排序空间进行排序除重记录,最后返回果集,如果表数据量大的可能会致用磁盘进行排序。

UNION ALL只是简单的将两个果合并后就返回。这样,如果返回的两个果集中有重的数据,那返回的果集就会包含重的数据了。

从效率上UNION ALL 要比UNION快很多

所以,如果可以确合并的两个果集中不包含重的数据的,那就使用UNION ALL,如下: select * from test union all select * from test_bk

原创粉丝点击