Ποια είναι η διαφορά μεταξύ 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 επιστρέφει όλες τις γραμμές μετά την ένωση.
from http://zengin.wordpress.com/2007/07/31/union-vs-union-all/
Δεν είμαι σίγουρος ότι έχει σημασία ποια βάση δεδομένων
Τα UNION
και UNION ALL
θα πρέπει να λειτουργούν σε όλους τους SQL Servers.
Θα πρέπει να αποφεύγετε τα περιττά UNION
που αποτελούν τεράστια διαρροή επιδόσεων. Κατά κανόνα, χρησιμοποιήστε το UNION ALL
αν δεν είστε σίγουροι για το ποιο να χρησιμοποιήσετε.