union 和 all union
sql union用法和sql union all用法,sql union效率
1、sql union用法
sql union在查询中可以将两个SQL 语句的结果合并起来。如果这样看的话, UNION 跟 JOIN 是相似的,两个指令都可以由多个表格中撷取资料。
sql union的一个限制是两个 SQL 语句所产生的栏位需要是同样的资料种类。另外,当我们用 UNION这个指令时,我们只会看到不同的资料值 (类似 SELECT DISTINCT)。
sql union只是将两个结果联结起来一起显示,并不是联结两个表,sql用法如下:
两个表格, StoreData_200903 表格 StoreData_200904,这两张表格的数据结构是完全一样的,只是存放了不同月份的数据库(注意:这样做是为了能够分表,而且可以按月存档数据),现在需要联合查询,就是从两个表中查询出数据,SQL 语句:
SELECT top 50 FROM StoreData_200903
UNION
SELECT top 50 FROM StoreData_200904
2、sql union all用法
sql union all这个指令的目的也是要将两个 SQL 语句的结果合并在一起。 sql union all和 sql union不同之处在于 sql union all会将每一次符合条件的数据列出来,无论数据库有无重复。
用法也很简单:
SELECT top 50 FROM StoreData_200903
UNION ALL
SELECT top 50 FROM StoreData_200904
值得注意的是,sql union all的执行效率要比sql union效率要高很多,这是因为,使用sql union需要进行排重,而sql union All 是不需要排重的,这一点非常重要,因为对于一些单纯地使用分表来提高效率的查询,完全可以使用sql union All。
还有,如果使用了union,无论是sql union还是sql union all一定要记住对数据库表加上索引!
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
在数据库中,union和union all 关键字都是将两个结果集合合并为一个,但这两者从使用和效率上来说都有所不同。
UNION在进行表链接后会筛选掉重复的记录,所以在表链接后会对所产生的结果集进行排序运算,删除重复的记录再返回结果。实际大部分应用中是不会产生重复的记录,最常见的是过程表与历史表UNION。如:
select * from gc_dfys
union
select * from ls_jg_dfys
这个SQL在运行时先取出两个表的结果,再用排序空间进行排序删除重复的记录,最后返回结果集,如果表数据量大的话可能会导致用磁盘进行排序。
而UNION ALL只是简单的将两个结果合并后就返回。这样,如果返回的两个结果集中有重复的数据,那么返回的结果集就会包含重复的数据了。
从效率上说,UNION ALL 要比UNION快很多,所以,如果可以确认合并的两个结果集中不包含重复的数据的话,那么就使用UNION ALL,如下:
select * from gc_dfys
union all
select * from ls_jg_dfys
union 和 all union的更多相关文章
- 转 SQL Union和SQL Union All两者用法区别效率以及与order by 和 group by配合问题
SQL Union和SQL Union All两者用法区别效率以及与order by 和 group by配合问题 SQL Union和SQL Union All用法 SQL UNION 操作符 UN ...
- 关于UNION ALL与 UNION 用法和区别
(转自:http://www.cnblogs.com/EricaMIN1987_IT/archive/2011/01/20/1940188.html) UNION指令的目的是将两个SQL语句的结果合并 ...
- SQL Union和SQL Union All用法
SQL UNION 操作符 UNION 操作符用于合并两个或多个 SELECT 语句的结果集. 请注意,UNION 内部的 SELECT 语句必须拥有相同数量的列.列也必须拥有相似的数据类型.同时,每 ...
- UNion ALL 和 UNION 的区别
UNION: 指定合并多个结果集并将其作为单个结果集返回.ALL: 将全部行并入结果中.其中包括重复行.如果未指定该参数,则删除重复行.
- linq 多个left join 和 sql union all -> linq union 方法
( from s in Base_SysMenus join r in Base_RoleRights on s.Menu_Id equals r.Menu_Id into temp f ...
- UNION ALL vs UNION
一直没意识到它们之间的区别,只知道UNION ALL在性能上优于UNION,忽略一个很重要的区别:UNION会去掉重复的行,而UNION ALL是包括所有行.
- [Union]C++中Union学习笔记
C++ union结构式一种特殊的类.它能够包含访问权限.成员变量.成员函数(可以包含构造函数和析构函数).它不能包含虚函数和静态数据变量.它也不能被用作其他类的基类,它本身也不能有从某个基类派生而来 ...
- Linq to SQL -- Union All、Union、Intersect和Top、Bottom和Paging和SqlMethods
Union All/Union/Intersect操作 适用场景:对两个集合的处理,例如追加.合并.取相同项.相交项等等. Concat(连接) 说明:连接不同的集合,不会自动过滤相同项:延迟. 1. ...
- SparkContext.union 与 RDD.union
RDD.union,和SparkContext.union都可以将多个RDD聚合成一个UnionRDD. 但不同的是,RDD.union在每次操作时,会创建一个新的数据集合,生成新的RDD,新的RDD ...
随机推荐
- **python中的类和他的成员
面向对象是一种编程方式,此编程方式的实现基于对 类 和 对象 的使用. Python从设计之初就已经是一门面向对象的语言,正因为如此,在Python中创建一个类和对象是很容易的. 在这里,为文章中使用 ...
- GridhEH 选择勾CheckBox
GridhEH 选择勾CheckBox Grideh>IndicatorOptions>gioShowRowSelCheckbox
- Mysql Replication 主从同步
简介: Mysql 的主从同步功能,这种解决方案是企业很常见的一种.常用于备份数据库,当客户端操作主库时,主库会产生binlog日志文件, 从库通过复制主库的binlog日志文件,然后解析成相应的 S ...
- axis2 webService开发指南(3)
复杂对象类型的WebService 这次我们编写复杂点的WebService方法,返回的数据是我们定义属性带getter.setter方法JavaBean,一维数组.二维数组等 1.服务源代码 新建一 ...
- WIN7下为Editplus添加右键打开
解决某些特殊情况, EditPlus 3在Windows7下使用右键菜单无法编辑文件的问题.1.Ctrl+R运行regedit2.在 HKEY_CLASSES_ROOT\* 下新建项 shell3.在 ...
- spring中 Bean的装配 Bean后处理器
- 关于 jdbc 的错误
- git 转移
git push --mirror https://github.com/cloud-pi/drbd-docker-plugin.git
- 获取崩溃时的调用栈和生成dump文件,然后自动重启
首先要说明的是: linux 下 比较方便可以得到 崩溃时的调用栈,win下 比较难办 1. linux 获取调用栈 代码奉上: #include <execinfo.h> //在头 ...
- launcher启动应用重启的BUG解决
最近遇到了一个问题,从launcher重新进入已经运行的应用会直接跳到应用的第一个界面. 经过对应用的跟踪,结合网络上的资料 http://stackoverflow.com/questions/19 ...