2011-10-24 13 views
6

Si tengo una VISTA con un grupo de UNIONES INTERNAS pero consulto contra eso VIEW SELECT solo las columnas que provienen de la tabla principal, SQL Server ignorará las uniones innecesarias en el VIEW mientras ejecuta o hace esas uniones Todavía tiene que pasar por alguna razón?SQL Server VIEW Rendimiento

Si hace una diferencia, esto es en SQL Server 2008 R2. Sé en cualquier caso que esto ya no es una gran solución, pero estoy tratando de encontrar el menor de 2 males.

Respuesta

3

puede ignorar las uniones si realmente no cambian la semántica. Un ejemplo de esto podría ser si tiene una restricción de clave externa confiable entre las tablas y solo está seleccionando columnas de la tabla de referencia (See example 9 in this article).

Debería verificar el plan de ejecución para estar seguro de su caso específico.

+1

Buen artículo, exactamente lo que estaba buscando, gracias. Como podría haber adivinado, dado que estoy haciendo esta pregunta en primer lugar, las relaciones FK en este DB son prácticamente inexistentes. Ahora puedo ver por qué el optimizador no tiene ninguna posibilidad de ayudarme en este escenario y mi plan de ejecución sugiere lo mismo. –

1

Si no extrae los campos de esas tablas, puede ser más rápido usar una cláusula EXISTS; esto también evitará que los duplicados de la tabla ed JOIN causen engaños en sus resultados.

1

Incluso si el optimizador ignora las combinaciones innecesarias, debe crear otra vista para manejar su caso particular. El uso y el abuso de las vistas (como este caso) pueden salirse de control y provocar confusiones, confusión y problemas de rendimiento muy significativos.

Incluso podría considerar refactorizar la vista que está planeando utilizar haciendo que se una a un conjunto de vistas "más pequeñas" para entregar el mismo conjunto de datos que ahora ... si tiene sentido hacer eso de curso.

Cuestiones relacionadas