Kuo skiriasi UNION
ir UNION ALL
?
UNION
pašalina pasikartojančius įrašus (kai visi rezultatų stulpeliai yra vienodi), o UNION ALL
to nedaro.
Naudojant UNION
, o ne UNION ALL
, sumažėja našumas, nes duomenų bazės serveris turi atlikti papildomą darbą, kad pašalintų besidubliuojančias eilutes, tačiau paprastai dublikatų nereikia (ypač kuriant ataskaitas).
SELECT 'foo' AS bar UNION SELECT 'foo' AS bar
Rezultatas:
+-----+
| bar |
+-----+
| foo |
+-----+
1 row in set (0.00 sec)
SELECT 'foo' AS bar UNION ALL SELECT 'foo' AS bar
Rezultatas:
+-----+
| bar |
+-----+
| foo |
| foo |
+-----+
2 rows in set (0.00 sec)
Pagrindinis skirtumas tarp UNION ir UNION ALL yra tas, kad union operacija pašalina pasikartojančias eilutes iš rezultatų rinkinio, tačiau union all grąžina visas eilutes po sujungimo.
iš http://zengin.wordpress.com/2007/07/31/union-vs-union-all/
Nesu tikras, kad svarbu, kuri duomenų bazė
UNION
ir UNION ALL
turėtų veikti visuose SQL serveriuose.
Turėtumėte vengti nereikalingų UNION
, nes jie labai mažina našumą. Paprastai naudokite UNION ALL
, jei nesate tikri, kurią naudoti.