Las versiones posteriores de SQL (2005+) parecen mejores para optimizar el uso de las vistas. Las vistas son mejores para consolidar las reglas de negocio. EG: donde trabajo tenemos una base de datos de productos de telecomunicaciones. Cada producto se asigna a un plan de tarifas, y ese plan de tarifas puede intercambiarse, y las tarifas en el plan de tarifas pueden activarse / desactivarse a medida que las tarifas aumentan o se modifican.
Para hacerlo más fácil, podemos hacer vistas anidadas. 1st view simplemente une los planes de tarifas a sus tarifas usando las tablas que sean necesarias y devolviendo los datos necesarios que necesitarían los siguientes niveles de vistas. La (s) segunda (s) vista (s) puede aislar solo planes de tarifas activos y sus tarifas activas. O simplemente tarifas de clientes. O tarifas de empleados (para descuentos de empleados). O tarifas de clientes comerciales versus residenciales. (los planes de tarifas pueden complicarse). El punto es que la vista básica garantiza que nuestra lógica comercial general para planes de tarifas y tarifas se unan correctamente en una sola ubicación. La siguiente capa de vistas nos da más enfoque en planes de tarifas específicos (tipos, activos / inactivos, etc.).
Estoy de acuerdo en que las vistas pueden hacer que la depuración sea complicada si está creando consultas y vistas al mismo tiempo. Pero, si está utilizando una vista probada y confiable, facilita la depuración. Usted sabe que la vista ya ha pasado por el timbre, por lo que probablemente no esté causando el problema.
Sin embargo, pueden surgir problemas con sus puntos de vista. "¿Qué pasa si un producto está asociado solo a un plan de tarifas inactivo?" o "¿y si un plan de tarifas solo tiene tasas inactivas?" Bueno, eso puede quedar atrapado en el nivel inicial con una lógica que detecta los errores del usuario. "Error, el producto está en un plan de tarifas inactivo ... corrija". También podemos ejecutar auditorías de consultas para verificarlo dos veces antes de una ejecución de facturación. (seleccione todos los planes y únase a la vista de plan de tarifas activo, solo devuelva los planes que no obtengan un plan de tarifas activo como problemas que deben abordarse).
Lo bueno de esto es que las vistas le permiten condensar en gran medida las consultas para informes, facturación, etc. Puede tener una vista de cuenta de cliente, luego una vista de segundo nivel de clientes activos. Combine eso con una vista de la dirección del cliente. Equipo que con una vista de producto (s) (unido en qué producto (s) tiene el cliente). Combine eso para ver el plan de tarifas de productos. Equipo que con vista de las características del producto. Ver, ver, ver, cada prueba y error para garantizar la integridad. Su consulta final usando las vistas es muy compacta.
editar:
Como un ejemplo de cómo la vista hubiera sido mejor que una simple consulta de tablas ... tuvimos un contratista temporal que hizo algunos cambios. Le dijeron que había puntos de vista para las cosas, pero decidió aplanar todas sus consultas. Facturación estaba eliminando algunas de sus consultas. Siguieron obteniendo múltiples tarifas y planes sobre cosas. Resulta que a sus consultas les faltaban criterios para permitir que solo se facturaran las tarifas si se encontraban entre las fechas de inicio y finalización en las que se suponía que el plan tarifario usaría esas / esas tarifas durante. Ups Si hubiera utilizado la vista, ya habría tenido en cuenta esa lógica.
Básicamente, debe sopesar el rendimiento frente a la cordura. Tal vez pueda hacer todo tipo de cosas elegantes para aumentar el rendimiento de una base de datos. Pero, si eso significa que es una pesadilla para una nueva persona hacerse cargo / mantener, ¿realmente vale la pena? ¿Realmente vale la pena que el chico nuevo tenga que jugar whack-a-mole para encontrar todas las consultas que necesitan para cambiar su lógica (y arriesgarse a que las olvide / los toque con el dedo gordo) b / c alguien decidió que las vistas son "malas" y ¿No consolidó alguna lógica comercial central en una que pudiera usarse en cientos de otras consultas? Realmente depende de su negocio y su equipo de TI / IS / DB. Pero, preferiría la claridad y la consolidación de fuente única sobre el rendimiento.