(转)sql union和union all的用法及效率

摘要:
1熟悉UNION指令的目的是组合两个SQL语句的结果。在效率方面,sql union all的执行效率远高于sql union。这是因为使用sql union需要重复数据消除,而sql union不需要全部重复数据消除。这非常重要,因为对于一些简单使用表拆分来提高效率的查询,可以使用sql union all。
1 熟悉union的相关操作

UNION指令的目的是将两个SQL语句的结果合并起来。从这个角度来看, 我们会产生这样的感觉,UNION跟JOIN似乎有些许类似,因为这两个指令都可以由多个表格中撷取资料。

UNION的一个限制是两个SQL语句所产生的栏位需要是同样的资料种类。

另外,当我们用 UNION这个指令时,我们只会看到不同的资料值 (类似 SELECT DISTINCT)。 UNION只是将两个结果联结起来一起显示,并不是联结两个表。

ps:

  • union的两个表必须拥有相同的列数(比如都是2个字段)
  • union会将两个表中的重复项过滤掉
  • union all可以合并两个表中重复的项

UNION 操作符用于合并两个或多个 SELECT 语句的结果集。

请注意,UNION 内部的每个 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每个 SELECT 语句中的列的顺序必须相同。

假设我们有以下的两个表格: 

  Store_Information 表: store_name      Sales      Date 
                         Los Angeles     $1500      Jan-05-1999 
                         San Diego       $250       Jan-07-1999 
                         Los Angeles     $300       Jan-08-1999 
                         Boston          $700       Jan-08-1999 


  Internet Sales 表:    Date            Sales 
               Jan-07-1999     $250 
                 Jan-10-1999     $535 
               Jan-11-1999     $320 
               Jan-12-1999     $750 

如果我们要找出来所有有营业额 (sales) 的日子。要达到这个目的,我们用以下的 SQL 语句: 
SELECT Date FROM Store_Information 
UNION 
SELECT Date FROM Internet_Sales 

结果: 
  Date 
  Jan-05-1999 
  Jan-07-1999 
  Jan-08-1999 
  Jan-10-1999 
  Jan-11-1999 
  Jan-12-1999 

UNION在进行表链接后会筛选掉重复的记录,所以在表链接后会对所产生的结果集进行排序运算,删除重复的记录再返回结果。

 

UNION ALL 这个指令的目的也是要将两个 SQL 语句的结果合并在一起。 UNION ALL 和 UNION 不同之处在于 UNION ALL 会将每一笔符合条件的资料都列出来,无论资料值有无重复。

如果上述的例子我们只用UNION ALL的话,则结果会是:

    Date 
  Jan-05-1999 
  Jan-07-1999 
  Jan-08-1999 
  Jan-08-1999 
  Jan-07-1999 
  Jan-10-1999 
  Jan-11-1999 
  Jan-12-1999 

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

 

从效率上说,sql union all的执行效率要比sql union效率要高很多,这是因为,使用sql union需要进行排重,而sql union All 是不需要排重的,这一点非常重要,因为对于一些单纯地使用分表来提高效率的查询,完全可以使用sql union All。

免责声明:文章转载自《(转)sql union和union all的用法及效率》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇常用-开发框架SVN 服务器端安装过程下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

使用快捷键提升C#开发效率

好的工具能帮我们提升开发效率,能用工具去做的事情尽量使用工具,让我们的开发尽量自动化是提升开发效率的关键因素。 很多人都用过Resharper,也被Resharper超多的快捷键所折服,本篇文章我总结出实际常用的几个Resharper快捷键。 1.生成方法存根:Ctrl+K+M(忘了这个快捷键是VS的还是Resharper的了) 当我们需要一个函数调用但...

提高程序运行效率的10个简单方法(转)

对于每一个程序员来说,程序的运行效率都是一个值得重视,并为之付出努力的问题。但是程序性能的优化也是一门复杂的学问,需要很多的知识,然而并不是每个程序员都具备这样的知识,而且论述如何优化程序提高程序运行效率的书籍也很少。但是这并不等于我们可以忽略程序的运行效率,下面就介绍一下本人积累的一些简单实用的提高程序运行效率的方法,希望对大家有所帮助。 注:以C/C+...

【转】C#字符串连接的效率问题

C#字符串连接常用的四种方式:StringBuilder、+、string.Format、List<string>。 1.+的方式 string sql = "update tableName set int1=" + int1.ToString() + ",int2=" + int2.ToString() + ",int3=" + int3....

sql记录查询重复注意事项(经验提升),in的用法和效率

sql查询重复记录,使用: select * from dimappnamenew as appn where id in (   select id   from dimappnamenew group by packagename,storename,app_name having count(*)>1 )  id是表的主键,三个属性映射后可以...

Pycharm 的好用配置,提升编码效率和编码舒适度

Pycharm 是我们常用的一款开发python代码的IDE,深受许多研发人员的喜欢。 Pycharm 可以做一些自定义的配置,提高编码舒适度和编码效率。 Part 01. 字体大小调整 目前Pycharm 的默认字体大小是 12,看着有点费力,而且容易视觉疲劳,建议调整到16,当然也需要根据个人的实际情况,比如电脑屏幕大小。 调整的办法: 先进入设置:F...

键盘快速启动工具Launchy的简单使用技巧

打开电脑面对林林总总的图标,找到对应的程序,快速启动显得尤为重要.这样有利于提高我们的效率. 好了,直接上图: 就是这款小巧的工具,界面如上. 接下来介绍这款工具的使用技巧. 1.安装成功后:打开工具之后,我们可以编辑热键,按照我们个人的操作习惯,设置自己熟悉的热键.工具默认热键是ALT+SPACE(空格键)                以后每次打开工具...