问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

UNION和UNION ALL两者之间在性能上的区别

发布网友 发布时间:2022-04-11 22:09

我来回答

1个回答

热心网友 时间:2022-04-11 23:39

在数据库中,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
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
幼儿园应该如何开展推广普通话的活动呢? STM32 | 遇到HardFault问题如何定位? 当别人说话很难听或使我难堪的时候,我的心理就会涌上一种暴力解决的念头... 美金为什么会下跌 为什么美金疯狂贬值 为什么美金下滑 京东客服兼职如何申请?有哪些要求? 京东兼职客服一个月能赚多少?怎么做兼职? 为什么海信电视遥控器只能关机不能开机? 张继科有没有拿过奥运冠军 SQL语句中:UNION与UNION ALL的区别是什么? 数据库中union 和union all的区别 fm2012自建数据库应该放在什么地方?怎样选择自建数据库进入游戏? Android 中创建的数据库文件默认放在那里的 sqlserver上创建的数据库放在哪的 c#中新建的数据库应该放在哪里才能使应用程序访问的到? 网站的数据库放在哪里,网站的程序又放在哪里? 数据库服务器 的作用是什么,怎么配置它啊? 网站上线时数据库部署在哪 如何部署 SQL 数据库 采用大型关系型数据库,能在windows\UNIX\Linux环境下部署的 电脑坏了?我XP停留在启动画面(就是上面微软大旗,下面一个进度条在爬动)? centos 7.0装完nv驱动,启动画面变蓝白进度条了,怎么改回默认的 win98如何改启动画面?怎样更改win98启动时有进度条时屏幕中间的字“microsotf windows 98” 电脑老卡在正在启动windows的进度条画面是硬盘坏了还是主板坏了? WinXP启动一直停留在进度条画面过不去 win7启动画面变成英文进度条,无法修改回来 win7 启动画面 怎么改成vista 进度条? windows 7系统启动画面变成了进度条怎么办? 我现在用VS 2005的MFC单文档程序做一个项目,需要载入大量的场景,需要在一开始做一个进度条。 求助,关于数据库的更改及使用 开发中遇到的关于数据库历史版本设计的问题 数据库设计,庞大的交易信息如何存储,查询?交易信息表该如何设计? 请给个详细的建财务数据库的设计思路! 设计数据库的问题? 设计好的数据库该注意些什么? 用wordpress搭建在线学习平台靠谱吗 为什么我的电脑运行vs2010又卡又慢,求解决方法,是不是电脑内存太小了 装VMware虚拟机后,VS2010启动超慢 windows10要怎么样能让运行速度加快 为什么我用vc++6.0和vs2010编译同一段代码、运行速度天差地别 电脑速度很慢,怎样提高运行速度?执行你那个操作过后有什么后果? 有什么方法可以提高 电脑的运行速度 怎么用java的lucene对数据库进行检索 lucene根据数据库记录id删除索引无效? lucene对数据库的索引,如何更新 为什么要用lucence而不用数据库本身的索引 如何用sql server 2008进行跟踪 如何在sql server2008 r2里根据pid跟踪数据库? SQL Server Profiler 2008 怎么追踪特定种类语句如 insert,update,delete,能指定某个数据追踪吗