Qual è la differenza tra UNION
e UNION ALL
?
UNION
rimuove i record duplicati (dove tutte le colonne nei risultati sono le stesse), UNION ALL
no.
C'è un impatto sulle prestazioni quando si usa UNION
invece di UNION ALL
, poiché il server del database deve fare un lavoro aggiuntivo per rimuovere le righe duplicate, ma di solito non si vogliono i duplicati (specialmente quando si sviluppano rapporti).
SELECT 'foo' AS bar UNION SELECT 'foo' AS bar
Risultato:
+-----+
| bar |
+-----+
| foo |
+-----+
1 row in set (0.00 sec)
SELECT 'foo' AS bar UNION ALL SELECT 'foo' AS bar
Risultato:
+-----+
| bar |
+-----+
| foo |
| foo |
+-----+
2 rows in set (0.00 sec)
La differenza di base tra UNION e UNION ALL è che l'operazione di unione elimina le righe duplicate dal set di risultati, ma union all restituisce tutte le righe dopo l'unione.
da http://zengin.wordpress.com/2007/07/31/union-vs-union-all/
Non sono sicuro che importi quale database
UNION
e UNION ALL
dovrebbero funzionare su tutti i server SQL.
Dovresti evitare le UNION
non necessarie, sono enormi perdite di prestazioni. Come regola generale usa UNION ALL
se non sei sicuro di quale usare.