Muchas veces puedes aliviar el olor visual creando vistas de ayuda, no creo que haya una regla difícil de cuantas combinaciones se consideran malas.
A diferencia de la codificación de procedimientos, dividir SQL en pequeños fragmentos puede dar lugar a consultas ineficaces.
SQL Optimiser funcionará muy bien con toneladas de combinaciones de tablas, y si tocas una esquina, puedes especificar el orden de unión o el estilo con sugerencias. En realidad, creo que es muy raro obtener consultas que se unan a más de 10 tablas, pero es bastante factible que esto ocurra en un escenario de tipo de informe.
Si descubre una situación en la que tiene muchas uniones Y ha descubierto que esta consulta en particular es un cuello de botella Y tiene todos los índices correctos en su lugar, probablemente necesite refactorizar. Sin embargo, tenga en cuenta que la gran cantidad de uniones puede ser solo un síntoma, no la causa raíz del problema. Se debe seguir la práctica estándar para la optimización de consultas (ver perfil, plan de consulta, estructura de base de datos, lógica, etc.)
SQL Server usa tempdb de todos modos para unir uniones, por lo que generalmente no es necesario crear tablas temporales solo para refactorizar una sola consulta SELECT.
Pregunta similar: http://stackoverflow.com/questions/793647/is-too-many-left-joins-a-code-smell –