Ejemplo:
SELECT NOMBRE, APELL FROM TABLA_EMPLEADOS
UNION
SELECT NOM, APE FROM TABLA_CLIENTES
Cuando se manda la sentencia al motor de la Base de Datos, realmente lo que hace es consultar TABLA1 con sus registros, consulta TABLA2 con sus registros, los junta, los ordena y les aplica un DISTINCT. Estas dos últimas tareas son las que ejercen más trabajo sobre el motor de Base de Datos, y las que más recursos gastan.
Si sabemos que los registros que vamos a obtener de TABLA1 y TABLA2 son completamente distintos, podemos usar UNION ALL, lo que evita que haga la ordenación y el DISTINCT en el motor de Base de Datos.
SELECT NOMBRE, APELL FROM TABLA_EMPLEADOS
UNION ALL
SELECT NOM, APE FROM TABLA_CLIENTES
Al hacer el UNION ALL, realmente lo que se pide es "traeme todos los registros, aunque esten duplicados". Pero si sabemos que no van a devolverse registros duplicados, usando esta variante obtendremos el mismo resultado, pero de forma más eficiente.
No hay comentarios:
Publicar un comentario