Kāda ir atšķirība starp UNION
un UNION ALL
?
UNION
dzēš dublējošos ierakstus (ja visi rezultātu kolonnas ir vienādi), bet UNION ALL
to nedara.
Izmantojot UNION
, nevis UNION ALL
, tiek samazināta veiktspēja, jo datubāzes serverim ir jāveic papildu darbs, lai noņemtu dublējošās rindas, taču parasti dubultie ieraksti nav vajadzīgi (īpaši, izstrādājot pārskatus).
SELECT 'foo' AS bar UNION SELECT 'foo' AS bar
Rezultāts:
+-----+
| bar |
+-----+
| foo |
+-----+
1 row in set (0.00 sec)
SELECT 'foo' AS bar UNION ALL SELECT 'foo' AS bar
Rezultāts:
+-----+
| bar |
+-----+
| foo |
| foo |
+-----+
2 rows in set (0.00 sec)
Galvenā atšķirība starp UNION un UNION ALL ir tāda, ka union operācija novērš dublētās rindas no rezultātu kopas, bet union all atgriež visas rindas pēc savienošanas.
no http://zengin.wordpress.com/2007/07/31/union-vs-union-all/
Neesmu pārliecināts, ka ir svarīgi, kura datu bāze
UNION
un UNION ALL
vajadzētu darboties visos SQL serveros.
Jums vajadzētu izvairīties no nevajadzīgiem UNION
, jo tie rada lielu veiktspējas zudumu. Ja neesat pārliecināts, kuru izmantot, parasti izmantojiet UNION ALL
.