Каква е разликата между UNION
и UNION ALL
?
UNION
премахва дублиращи се записи (когато всички колони в резултатите са еднакви), а UNION ALL
не го прави.
При използването на UNION
вместо UNION ALL
се наблюдава спад в производителността, тъй като сървърът на базата данни трябва да извърши допълнителна работа, за да премахне дублиращите се редове, но обикновено дублиращите се редове не са ви необходими (особено при разработване на отчети).
SELECT 'foo' AS bar UNION SELECT 'foo' AS bar
Резултат:
+-----+
| bar |
+-----+
| foo |
+-----+
1 row in set (0.00 sec)
SELECT 'foo' AS bar UNION ALL SELECT 'foo' AS bar
Резултат:
+-----+
| bar |
+-----+
| foo |
| foo |
+-----+
2 rows in set (0.00 sec)
Основната разлика между UNION и UNION ALL е, че операцията union премахва дублираните редове от набора от резултати, но union all връща всички редове след обединяването.
от http://zengin.wordpress.com/2007/07/31/union-vs-union-all/
Не съм сигурен, че има значение коя база данни
UNION
и UNION ALL
трябва да работят на всички SQL сървъри.
Трябва да избягвате ненужните UNION
, които са огромна загуба на производителност. Като правило използвайте UNION ALL
, ако не сте сигурни кое да използвате.