vistas vista ventajas varias una tipos tablas sintaxis mecanismo ejemplos desventajas datos crear como caracteristicas views database-agnostic

views - varias - ventajas y desventajas de una vista base de datos



¿Cuándo usar las vistas de la base de datos y cuándo no? (7)

Ahora que SQL Server tiene expresiones de tabla comunes, me encuentro creando menos vistas. Cuando creo una vista, generalmente es para una jerarquía normalizada que puede usarse en muchas consultas, no en algo que reemplaza a una consulta.

Por ejemplo, Región, Mercado y Ciudad pueden ser tres tablas normalizadas (copo de nieve). El 90% de mis consultas necesitan estos datos, así que crearé una vista. La vista nunca reemplaza una sola consulta, pero hace que todas las demás consultas sean simples y SECAS.

Esta pregunta es sobre vistas de base de datos, no vistas materializadas.

Pros:

  • Simplificación de consultas.
  • Evite repetir las mismas uniones en consultas multiples.
  • Evita los números mágicos.

Contras:

  • Ocultar consultas reales (puede ser que estés repitiendo uniones).

¿Qué más?


Aunque las vistas pueden ocultar la complejidad y múltiples uniones, esta es la complejidad que habría estado en el SP de todos modos.

Si el SP podría haberse optimizado, entonces la vista debería optimizarse, lo que conduciría a un mayor rendimiento en todos los SP que lleguen a esa vista.

Las vistas son increíblemente poderosas y útiles por una razón que se destaca sobre todas las otras muy buenas razones. Reducen la duplicación de código. Es decir, en la mayoría de los casos, la línea de fondo. Si se usará una consulta en tres o más lugares, entonces una vista simplificará drásticamente sus cambios si cambian los parámetros del esquema o de la consulta.

Una vez tuve que editar 22 procedimientos almacenados para cambiar alguna lógica de consulta. Si la arquitectura original hubiera utilizado vistas, habría tenido solo tres cambios.


He tenido que usar vistas varias veces para hacer uniones extrañas y agrupar por alias.

Por uniones extrañas, me refiero a seleccionar una lista de fechas distintas y luego unirlas de nuevo a la tabla de la que provienen para obtener entradas nulas para días vacíos. No pude encontrar otra manera de hacerlo.

En cuanto a la agrupación por alias, parece depender de la complejidad de la fórmula dentro del alias. Si el alias no hacía referencia a ninguna columna real, o columnas que ya estaban agrupadas, todo estaba bien, pero los alias en las columnas que no estaban incluidas en la agrupación generaban errores.

Parece recordar haber leído o escuchado en algún lugar durante mis días universitarios que la selección de una vista fue más rápida que la selección de un montón de tablas unidas, pero no sé si eso es cierto.

Una última ventaja de usar una vista: tablas dinámicas en Excel. No creo que haya una forma de unir tablas, o al menos no en la interfaz del asistente. Podría ser posible hacer uniones en Microsoft Query, pero aún no lo he intentado porque se me acaba de ocurrir.


Las vistas son bastante impresionantes cuando no confías totalmente en la parte que envía consultas a tu base de datos. Un buen ejemplo podría ser crear una vista en las tablas para un contratista, de modo que todo lo que puedan ver sean las filas correspondientes a su proyecto.


Pros: Le permite cambiar las estructuras de datos subyacentes sin afectar las consultas que utilizan las aplicaciones (siempre que su vista pueda ocultar las estructuras de datos)


Seguridad. Conceda acceso en una vista a los usuarios que deberían poder ver las columnas devueltas.


Solía ​​usarlos todo el tiempo, ahora raramente. Sin embargo, hago todo el acceso a mis datos a través de procedimientos almacenados, por lo que la utilidad de una vista es algo menor, ya que el SP puede ocultar la complejidad de la unión donde sea necesario.

Todavía consideraría usar una vista si hubiera una combinación particularmente complicada de muchas tablas, de las cuales necesitaba crear muchos SP, pero para ser honesto, no puedo pensar en ninguna que esté en producción en este momento. .

El otro escenario que usaría sería uno donde mis usuarios tengan acceso a la base de datos para generar sus propios informes, y quería ocultarles la complejidad subyacente.