Unión cartesiana con las tablas pequeñas primero

Una unión cartesiana es una forma de unión de bucle anidado en la que no existen predicados de unión entre las dos tablas.

Iniciar la información de la interfaz de programación específica del programa. Db2 suele evitarse una unión cartesiana, pero a veces es el método más eficiente, como en el siguiente ejemplo. La consulta utiliza tres tablas: T1 contiene 2 filas, T2 contiene 3 filas y T3 contiene 10 millones de filas.

SELECT * FROM T1, T2, T3
  WHERE  T1.C1 = T3.C1 AND
         T2.C2 = T3.C2 AND
         T3.C3 = 5;

Los predicados de unión se encuentran entre T1 y T3 y entre T2 y T3. Ningún predicado une T1 y T2.

Supongamos que 5 millones de filas de T3 tienen el valor C3=5. El tiempo de proceso es elevado si T3 es la tabla externa de la unión y se accede a las tablas T1 y T2 para cada uno de los 5 millones de filas.

Sin embargo, si se unen todas las filas de T1 y T2, sin un predicado de unión, sólo se accede a los 5 millones de filas seis veces, una vez para cada fila de la unión cartesiana de T1 y T2. Es difícil decir cuál es la vía de acceso más eficaz. Db2 evalúa las diferentes opciones y podría decidir acceder a las tablas en la secuencia T1, T2, T3. Finalizar la información de la interfaz de programación específica del programa.