首页 数据库 mysql教程 SQL语句的MINUS,INTERSECT和UNION ALL的解析

SQL语句的MINUS,INTERSECT和UNION ALL的解析

Oct 17, 2017 am 10:10 AM
union

SQL语句中的三个关键字:MINUS(减去),INTERSECT(交集)和UNION ALL(并集);

关于集合的概念,中学都应该学过,就不多说了.这三个关键字主要是对数据库的查询结果进行操作,正如其中文含义一样:两个查询,MINUS是从第一个查询结果减去第二个查询结果,如果有相交部分就减去相交部分;否则和第一个查询结果没有区别. INTERSECT是两个查询结果的交集,UNION ALL是两个查询的并集;

 

 虽然同样的功能可以用简单SQL语句来实现,但是性能差别非常大,有人做过实验:made_order共23万笔记录,charge_detail共17万笔记录:

    SELECT order_id FROM made_order
  MINUS
  SELECT order_id FROM charge_detail
耗时:1.14 sec
  
  SELECT a.order_id FROM made_order a
   WHERE a.order_id NOT exists (
     SELECT order_id
     FROM charge_detail
     WHERE order_id = a.order_id
   )
耗时:18.19 sec
登录后复制

性能相差15.956倍!因此在遇到这种问题的时候,还是用MINUS,INTERSECT和UNION ALL来解决问题,否则面对业务中随处可见的上百万数据量的查询,数据库服务器还不被咱玩的死翘翘?

PS:应用两个集合的相减,相交和相加时,是有严格要求的:1.两个集合的字段必须明确(用*就不行,报错);2.字段类型和顺序相同(名称可以不同),如:集合1的字段1是NUMBER,字段2是VARCHAR,那么集合2的字段1必须也是NUMBER,字段2必须是VARCHAR;3.不能排序,如果要对结果排序,可以在集合运算后,外面再套一个查询,然后排序,如前面的例子可以改成:

SELECT * FROM 
   (SELECT order_id FROM made_order
   MINUS
  SELECT order_id FROM charge_detail)
ORDER BY ORDER_ID ASC
登录后复制

以上是SQL语句的MINUS,INTERSECT和UNION ALL的解析的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解锁Myrise中的所有内容
3 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

c语言union的用法 c语言union的用法 Sep 27, 2023 am 11:00 AM

c语言union的用法是一种特殊的数据类型,它允许在相同的内存位置存储不同的数据类型,union的使用可以帮助我们节省内存空间,并且可以方便地在不同的数据类型之间进行转换。使用union时需要注意对应的成员是有效的,并且只能同时访问一个成员。

怎么用mysql union实现全外连接查询 怎么用mysql union实现全外连接查询 May 30, 2023 pm 06:49 PM

1、union不是多表连接查询的一种方式,将多个查询句子的查询结果合并成一个结果,去除重复数据。2、全外连接查询左表和右表的数据,然后根据连接条件连接。实例#用左外的Aunion右外的BSELECT*FROMt_categorycLEFTOUTERJOINt_productpONc.cid=p.cnounionSELECT*FROMt_categorycRIGHTOUTERJOINt_productpONc.cid=p.cno

MySQL中如何使用FULL OUTER JOIN函数获取两个表的并集 MySQL中如何使用FULL OUTER JOIN函数获取两个表的并集 Jul 26, 2023 pm 05:45 PM

MySQL中如何使用FULLOUTERJOIN函数获取两个表的并集在MySQL中,FULLOUTERJOIN函数是一种融合内连接和外连接的功能强大的连接操作。它可以用于获取两个表的并集,即将两个表中的所有数据合并为一个结果集。本文将介绍FULLOUTERJOIN函数的用法,并提供一些示例代码以帮助读者更好地理解。FULLOUTERJOIN函数

java如何定义Union类实现数据体的共存 java如何定义Union类实现数据体的共存 May 14, 2023 pm 03:34 PM

定义Union类实现数据体的共存在C/C++语言中,联合体(union),又称共用体,类似结构体(struct)的一种数据结构。联合体(union)和结构体(struct)一样,可以包含很多种数据类型和变量,两者区别如下:结构体(struct)中所有变量是“共存”的,同时所有变量都生效,各个变量占据不同的内存空间;联合体(union)中是各变量是“互斥”的,同时只有一个变量生效,所有变量占据同一块内存空间。当多个数据需要共享内存或者多个数据每次只取其一时,可以采用联合体(union)。在Java

MySQL中怎么用Union优化Like语句 MySQL中怎么用Union优化Like语句 May 31, 2023 pm 03:55 PM

用Union优化Like语句1)有时候,你可能需要在查询中使用or操作符进行比较。当or关键字在where子句中使用频率过高的时候,它可能会使MySQL优化器错误的选择全表扫描来检索记录。union子句可以是查询执行的更快,尤其是当其中一个查询有一个优化索引,而另一个查询也有一个优化索引的时候。比如,在first_name和last_name上分别存在索引的情况下,执行如下查询语句:mysql>select*fromstudentswherefirst_namelike'A

如何通过MySQL对UNION优化来提高性能 如何通过MySQL对UNION优化来提高性能 May 11, 2023 pm 05:40 PM

在许多数据库应用程序中,我们都会面临需要整合来自多个数据源的数据的情况。MySQL的UNION语句就是一种用来解决这种情况的方式,它允许我们将两个或多个SELECT语句的结果集合并为一个。虽然这是一个非常方便的功能,但如果不加以优化,UNION语句也可能对系统产生性能问题。本文将探讨如何通过MySQL对UNION优化来提高性能。使用UNIONALL在使用U

mysql使用union的注意点是什么 mysql使用union的注意点是什么 Jun 03, 2023 pm 08:04 PM

1、union操作符用于连接两个以上的select语句的结果组合到一个结果集合中。多个select语句会删除重复的数据。2、在使用时union合并结果集时,要求两个结果集的列数相同。实例selectplayerno,townfromPLAYERSwheretown='Inglewood'unionselectplayerno,townfromPLAYERSwheretown='Plymouth';

MySQL中union和unionall区别是什么 MySQL中union和unionall区别是什么 May 30, 2023 am 08:04 AM

union:对多个结果集进行并集操作,不包括重复行,同时进行排序。unionall:对多个结果集进行并集操作,包括重复行,不进行排序。查询部门小于30号的员工信息,和部门大于20小于40号的员工信息。①.先查询部门小于30号的员工信息。SELECTemployees_id,last_name,salary,department_idFROMemployeesWHEREdepartment_id

See all articles