Una sentencia SQL camina hacia un restaurante y ve dos tablas. Se acerca a ellas y les pregunta: “¿Puedo unirme a ustedes?”— Fuente: desconocida
La operación de unión (en inglés join) transforma los datos desde un modelo normalizado hacia una forma no normalizada que se ajusta a un objetivo específico de procesamiento. La unión es muy sensible a la diferencia entre minúsculas y mayúsculas para los tiempos de búsqueda porque fusiona fragmentos de datos aislados. Indexar correctamente es nuevamente la mejor solución para reducir los tiempos de respuesta. El índice correcto depende sin embargo de los tres algoritmos de uniones posibles usados por la sentencia.
Pero existe una cosa que es común a todos los algoritmos de unión: procesan solamente dos tablas al mismo tiempo. Una sentencia SQL con más tablas requiere múltiples etapas: primero, construir un resultado intermedio uniendo dos tablas; y, después, unir el resultado con la siguiente tabla y así sucesivamente.
Aunque el orden de la unión no tiene impacto sobre el resultado final, afecta al rendimiento. Por lo tanto, el optimizador evaluará todas las combinaciones de orden posibles de la unión y seleccionará la mejor. Eso significa que el mero hecho de optimizar una sentencia compleja podría convertirse en un problema de rendimiento. Cuantas más tablas tenga la unión, más variantes de planes de ejecución hay que evaluar (viendo el lado matemático serían n! (crecimiento factorial), aunque eso no es un problema cuando se usan las variables Bind.
Importante
Cuanto más compleja sea la sentencia, más importante es usar las variables Bind.
No usar las variables Bind es como recompilar cada vez el programa.
Si te gusta mi manera de explicar, te encantará mi libro.