Para la unión o la unión de todo, esa es la cuestión
-
29-09-2019 - |
Pregunta
Tengo dos consultas que estoy UNION
ing juntos de tal manera que ya sé que no habrá elementos duplicados entre las dos consultas. Por lo tanto, UNION
y UNION ALL
producirán los mismos resultados.
¿Cuál debo usar?
Solución
Se debe utilizar la que coincida con la intención de lo que busca. Si desea asegurarse de que no hay duplicados utilizan UNION
, de lo contrario usar UNION ALL
. El hecho de que sus datos serán los mismos resultados ahora no quiere decir que siempre lo hará.
Dicho esto, UNION ALL
será más rápido en cualquier aplicación de base de datos en su sano juicio, consulte los artículos siguientes ejemplos. Pero por lo general, son los mismos, excepto que realiza el UNION
un paso adicional para quitar filas idénticas (como cabría esperar), y pueden tender a dominar el tiempo de ejecución.
Otros consejos
veo que ha etiquetado esta pregunta rendimiento, por lo que supongo que es su principal consideración.
UNION ALL
se UNION
absolutamente superan ya SQL no tener que comprobar los dos conjuntos de DUP.
A menos que necesite SQL para realizar la comprobación de duplicados para usted, utilice siempre UNION ALL
.
Según http://blog.sqlauthority.com/2007/03/10/sql-server-union-vs-union-all-which-is-better-for-performance/ al menos por el rendimiento es mejor utilizar UNION ALL, ya que no duplicados activamente distintas y, como tal, es más rápido
Me gustaría utilizar todos modos UNION ALL
. A pesar de que saben que no van a ser duplicados, dependiendo de su motor de servidor, es posible que no lo saben.
Por lo tanto, sólo para proporcionar información adicional al servidor de base de datos, a fin de que su planeador de consultas una mejor opción (probablemente), el uso UNION ALL
.
Una vez dicho esto, si su servidor de base de datos 's planificador de consulta es lo suficientemente inteligente como para inferir que la información de la cláusula UNION
y de la tabla de índices, a continuación, los resultados (el rendimiento y la semántica en cuanto a) debe ser el mismo.
En cualquier caso, depende en gran medida de la servidor de base de datos que está utilizando.
Dado que no habrá duplicados de los dos utilización UNION ALL. No es necesario para comprobar si hay duplicados y UNION ALL se preforma la tarea de manera más eficiente.