sql >> Base de Datos >  >> RDS >> Mysql

¿El orden de las tablas en combinaciones directas, sin directivas de sugerencias, afecta el rendimiento?

Respuesta a su pregunta:Sí, el orden de la tabla marca la diferencia al unirse.

También puede informar al optimizador sobre el plan de ejecución.

La sugerencia ORDERED hace que Oracle una las tablas en el orden en que aparecen en la cláusula FROM.

Por ejemplo, esta declaración une la tabla TAB1 con la tabla TAB2 y luego une el resultado con la tabla TAB3:

 SELECT /*+ ORDERED */ TAB1.COL1, TAB2.COL2, TAB3.COL3
     FROM TAB1, TAB2, TAB3
    WHERE TAB1.COL1 = TAB2.COL1
         AND TAB2.COL1 = TAB3.COL1;

Si omite la sugerencia ORDERED de una instrucción SQL que realiza una unión, el optimizador elige el orden en el que se unen las tablas. Es posible que desee utilizar la sugerencia ORDERED para especificar un orden de unión si sabe algo sobre el número de filas seleccionadas de cada tabla que el optimizador no sabe. Dicha información le permitiría elegir una tabla interna y externa mejor que el optimizador.

Por lo general, si analiza las tablas, el optimizador selecciona un plan estrella eficiente. También puede usar sugerencias para mejorar el plan. El método más preciso es ordenar las tablas en la cláusula FROM en el orden de las claves en el índice, con la tabla grande al final. Luego use las siguientes sugerencias:

/*+ ORDERED USE_NL(FACTS) INDEX(FACTS FACT_CONCAT) */