Pregunta

Tengo dos consultas que estoy UNIONing 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?

¿Fue útil?

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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top