数据库中union 与union all 的区别_数据库其它

今天晚上在操作两个表时才发现两个的区别。呵呵。

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

时间: 2024-12-05 01:04:06

数据库中union 与union all 的区别_数据库其它的相关文章

sql-将一个数据库中的所有表复制到另一个数据库中

问题描述 将一个数据库中的所有表复制到另一个数据库中 两个数据库不在一个服务器上!!! 比如我本机的ip地址为11.12.13.15 数据库名称为sqljiang 登陆名和密码分别为sa和sa123 服务器的ip为22.33.55.66 数据库名称为sqlfwqsjl 服务器中的数据库是空的 现在我想将本机sqljiang中的所有信息完整复制到服务器中,包括表结构. 表中的数据.视图.存储过程等,如何通过脚本实现. 由于服务器没有这么大的权限,因此不能通过直接还原数据库备份的方法... 解决方案

实时显示-vc 怎么让网格控件 实时的显示数据库中的数据好点,ODBC连的数据库

问题描述 vc 怎么让网格控件 实时的显示数据库中的数据好点,ODBC连的数据库 使用一个网格控件显示数据库中的一些字段的值,当库中的数据有变化时,网格及时刷新, 除了定时查询数据库显示到网格之外,还有没有别的方法,各位大牛们都是怎么做的? 解决方案 http://www.51cto.com/specbook/14/37094.htmhttps://msdn.microsoft.com/zh-cn/library/a52dhwx7(v=VS.80).aspx 解决方案二: 开一个后台线程定期查询

麻烦各位大神帮帮忙!C#解析xml实现对应数据库中的字段,导入excel数据到orcel数据库

问题描述 麻烦各位大神帮帮忙!C#解析xml实现对应数据库中的字段,导入excel数据到orcel数据库 我现在已经写好了导入数据库了,可是字段是定死的,预防有时候excel表格有变化,方便修改,所以解析xml,然后在xml对应字段,然后再导入到数据库中. 解决方案 用不着什么xml,根据你的需求,用一个简单的文本文件,每一行对应一个字段,和对应的excel列,然后程序读取下就可以了. 解决方案二: C#配置xml实现自动导入excel数据到数据库中对应的字段,麻烦各位大神帮帮忙!

数据库的设计方法、规范与技巧_数据库其它

一.数据库设计过程 数据库技术是信息资源管理最有效的手段.数据库设计是指对于一个给定的应用环境,构造最优的数据库模式,建立数据库及其应用系统,有效存储数据,满足用户信息要求和处理要求. 数据库设计中需求分析阶段综合各个用户的应用需求(现实世界的需求),在概念设计阶段形成独立于机器特点.独立于各个DBMS产品的概念模式(信息世界模型),用E-R图来描述.在逻辑设计阶段将E-R图转换成具体的数据库产品支持的数据模型如关系模型,形成数据库逻辑模式.然后根据用户处理的要求,安全性的考虑,在基本表的基础上

数据库中聚簇索引与非聚簇索引的区别[图文]_MsSql

在<数据库原理>里面,对聚簇索引的解释是:聚簇索引的顺序就是数据的物理存储顺序,而对非聚簇索引的解释是:索引顺序与数据物理排列顺序无关.正式因为如此,所以一个表最多只能有一个聚簇索引. 不过这个定义太抽象了.在SQL Server中,索引是通过二叉树的数据结构来描述的,我们可以这么理解聚簇索引:索引的叶节点就是数据节点.而非聚簇索引的叶节点仍然是索引节点,只不过有一个指针指向对应的数据块.如下图: 非聚簇索引   聚簇索引 聚簇索引与非聚簇索引的本质区别到底是什么?什么时候用聚簇索引,什么时候

SQL中IS NOT NULL与!=NULL的区别_数据库其它

平时经常会遇到这两种写法:IS NOT NULL与!=NULL.也经常会遇到数据库有符合条件!=NULL的数据,但是返回为空集合.实际上,是由于对二者使用区别理解不透彻. 默认情况下,推荐使用 IS NOT NULL去做条件判断,因为SQL默认情况下对WHERE XX!= Null的判断会永远返回0行,却不会提示语法错误. 这是为什么呢? SQL Server文档中对Null值的比较运算定义了两种规则,如在SQL Server 2000中: 规则一是是ANSISQL(SQL-92)规定的Null

数据库中聚簇索引与非聚簇索引的区别[图文]

在<数据库原理>里面,对聚簇索引的解释是:聚簇索引的顺序就是数据的物理存储顺序,而对非聚簇索引的解释是:索引顺序与数据物理排列顺序无关.正式因为如此,所以一个表最多只能有一个聚簇索引. 不过这个定义太抽象了.在SQL Server中,索引是通过二叉树的数据结构来描述的,我们可以这么理解聚簇索引:索引的叶节点就是数据节点.而非聚簇索引的叶节点仍然是索引节点,只不过有一个指针指向对应的数据块.如下图: 非聚簇索引 聚簇索引 聚簇索引与非聚簇索引的本质区别到底是什么?什么时候用聚簇索引,什么时候用非

数据库中的Schema和Database的区别

在mysql中创建一个Schema和创建一个Database的效果好像是一样的,但是在sqlserver和orcal数据库中效果又是不同的,目前我只能理解为在mysql中schema<==>database; 数据库中的user和schema的关系: 假如我们想了解数据库中的user和schema的关系,首先必须要清楚数据库中的user和schema的概念. 在sqlserver2000中,由于架构的原因,user和schema总有一层隐含的关系,让我们很少意识到其实user和schema是两

asp Driver和Provider两种连接字符串连接Access时的区别_数据库相关

一个网站程序,在添加新闻时出现错误 以下是错误提示: Microsoft OLE DB Provider for ODBC Drivers 错误 '80040e21' 多步 OLE DB 操作产生错误.如果可能,请检查每个 OLE DB 状态值.没有工作被完成. 出现这种错误的原因是因为我把access连接字符串修改为"Driver={Micorsoft Access Driver ()};dbq=" & Server.Mappath(DbPath),而原来的连接字符串为&qu