當(dāng)前位置:
首頁(yè) >
UNION 和UNION ALL 的区别
發(fā)布時(shí)間:2025/3/11
14
豆豆
生活随笔
收集整理的這篇文章主要介紹了
UNION 和UNION ALL 的区别
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
UNION:的結(jié)果集沒(méi)有重復(fù)行,且安union默認(rèn)的排序規(guī)則進(jìn)行排序了。
UNION ALL:的結(jié)果集,如果各表有重復(fù)行就有重復(fù)行,不刪重復(fù)行,不排序。
-------------------------
在數(shù)據(jù)庫(kù)中,UNION和UNION ALL關(guān)鍵字都是將兩個(gè)結(jié)果集合并為一個(gè),但這兩者從使用和效率上來(lái)說(shuō)都有所不同。
UNION在進(jìn)行表鏈接后會(huì)篩選掉重復(fù)的記錄,所以在表鏈接后會(huì)對(duì)所產(chǎn)生的結(jié)果集進(jìn)行排序運(yùn)算,刪除重復(fù)的記錄再返回結(jié)果。
實(shí)際大部分應(yīng)用中是不會(huì)產(chǎn)生重復(fù)的記錄,最常見(jiàn)的是過(guò)程表與歷史表UNION。如:
select * from gc_dfys
union
select * from ls_jg_dfys
這個(gè)SQL在運(yùn)行時(shí)先取出兩個(gè)表的結(jié)果,再用排序空間進(jìn)行排序刪除重復(fù)的記錄,最后返回結(jié)果集,如果表數(shù)據(jù)量大的話可能會(huì)導(dǎo)致用磁盤(pán)進(jìn)行排序。
而UNION ALL只是簡(jiǎn)單的將兩個(gè)結(jié)果合并后就返回。這樣,如果返回的兩個(gè)結(jié)果集中有重復(fù)的數(shù)據(jù),那么返回的結(jié)果集就會(huì)包含重復(fù)的數(shù)據(jù)了。
從效率上說(shuō),UNION ALL 要比UNION快很多,所以,如果可以確認(rèn)合并的兩個(gè)結(jié)果集中不包含重復(fù)的數(shù)據(jù)的話,那么就使用UNION ALL,如下:
select * from gc_dfys
union all
select * from ls_jg_dfys
總結(jié)
以上是生活随笔為你收集整理的UNION 和UNION ALL 的区别的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Lock的lock()方法
- 下一篇: linux df命令无反馈,Linux-