¿Cuál es la diferencia entre UNION
y UNION ALL
?
UNION
elimina los registros duplicados (donde todas las columnas de los resultados son iguales), UNION ALL
no lo hace.
Hay un impacto en el rendimiento cuando se utiliza UNION
en lugar de UNION ALL
, ya que el servidor de la base de datos debe hacer un trabajo adicional para eliminar las filas duplicadas, pero por lo general usted no quiere los duplicados (especialmente al desarrollar informes).
Ejemplo de #UNION:
SELECT 'foo' AS bar UNION SELECT 'foo' AS bar
Resultado:
+-----+
| bar |
+-----+
| foo |
+-----+
1 row in set (0.00 sec)
SELECT 'foo' AS bar UNION ALL SELECT 'foo' AS bar
Resultado:
+-----+
| bar |
+-----+
| foo |
| foo |
+-----+
2 rows in set (0.00 sec)
La diferencia básica entre UNION y UNION ALL es que la operación de unión elimina las filas duplicadas del conjunto de resultados, mientras que union all devuelve todas las filas después de la unión.
desde http://zengin.wordpress.com/2007/07/31/union-vs-union-all/
No estoy seguro de que importe la base de datos
UNION
y UNION ALL
deberían funcionar en todos los servidores SQL.
Deberías evitar las "Uniones" innecesarias, ya que son una gran pérdida de rendimiento. Como regla general, utilice UNION ALL
si no está seguro de cuál utilizar.