2010-09-02 13 views
11

Tengo que ejecutar una instrucción seleccionada en varias tablas. Estoy seguro de que las tablas devuelven registros diferentes. De todos modos estoy usando UNION TODO.rendimiento de unión versus unión todos

¿Es mejor utilizar UNION o UNION ALL en términos de rendimiento cuando estoy seguro de que las tablas devuelven registros diferentes?

+0

posible duplicado de [Para la unión o la unión de todo, esa es la cuestión] (http://stackoverflow.com/questions/3909563/to-union-or-union-all-that-is-the-question) –

Respuesta

5

UNION ALL siempre es más rápido, porque excluye UNIÓN entradas duplicadas

1

Es mejor utilizar UNION ALL cuando sepa que desea todas las filas de resultados, sepa o no que serán distintas o no. UNION sin "todo" será siempre realizar la "verificación distinta", independientemente de cuáles sean los datos en realidad.

0

¿Por qué UNION ALL es más rápido? Porque UNION debe hacer una especie para eliminar los duplicados. Si no necesita eliminar duplicados, UNION TODO es la mejor opción, sin embargo, UNION tiene un propósito y debe usarse cuando corresponda.

3

UNION implementa internamente dos consultas. 1. SELECT que devolverá un conjunto de datos 2. DISTINCT. Cualquiera que haya estudiado las partes internas de la base de datos puede comprender fácilmente que una cláusula DISTINCT es extremadamente costosa en términos de procesamiento.

Si está seguro de que el conjunto de datos resultante no necesita tener filas únicas, entonces podemos omitir UNION y usar UNION ALL.

UNION ALL será el mismo que UNION excepto que no se dispara un DISTINCT internamente evitándonos operaciones costosas