2010-03-05 16 views
6

Tengo una vista que se crea a partir de una tabla base. Esta vista es básicamente la copia exacta de la tabla sin condiciones de filtro y tiene todas las columnas y registros de la tabla.Usar vistas en SQL

¿Hay alguna ventaja en el uso de la vista (que es una copia directa de la tabla) en lugar de la tabla directamente en mi aplicación o en los procedimientos almacenados?

+0

Hola Avg, si alguna de estas respuestas te ha sido útil, considera marcar una de ellas como aceptada. Se considera buenos modales y también alienta a otros a responder sus preguntas en el futuro. :) –

Respuesta

0

en este caso, no hay diferencia entre la vista y la tabla. view no es una copia de la tabla, sino algo así como la instrucción select almacenada.

0

Puede haber serias desventajas en este enfoque, desde un aspecto de rendimiento.

http://www.sql-server-performance.com/tips/views_general_p1.aspx

Yo sugeriría evitando el uso de puntos de vista, si es posible.

+0

como se menciona en los comentarios del artículo al que se hace referencia, hay más desinformación que hechos, y estoy de acuerdo con el afiche en que el artículo debe ser eliminado. especulación y aquí dice que no es un sustituto de la evidencia empírica que el artículo no proporciona. –

0

No.

Con la excepción de las vistas indizadas, las vistas solo son útiles para leer el analizador SQL. Ejecutar una consulta que contiene una vista es básicamente lo mismo que ejecutar una consulta con la definición de vista copiada y pegada en la consulta.

Desaconsejaría el uso de vistas complejas de esta manera, aunque hace que la consulta se vea más limpia, hace que el proceso de diagnóstico sea más complicado (ya que debe buscar todas las vistas para entender cuál es la consulta original está haciendo)

3

Pero debe tener en cuenta que la forma en que funcionan las vistas es un poco diferente, ya que terminará teniendo un exceso en el lado de la base de datos.

La forma en que funciona una vista es haciendo un Seleccionar *, y luego filtrándose para las columnas que le está agregando.

Estaría muy cansado de usar vistas para esto, a menos que haya algunas preocupaciones serias de seguridad.

El camino a seguir es crear un procedimiento almacenado que tome los datos directamente de la tabla. De esa forma, puedes tomar el máximo índice y todo eso.

Saludos

0

Puede no ser un objetivo inmediato o beneficio, pero sí le proporcionará un punto de extracción que puede proporcionar un beneficio basado en la arquitectura de seguridad o en un momento posterior en el tiempo.

La vista podría considerarse en esencia un contrato de datos, que en el futuro permite que la estructura subyacente se flexione hasta cierto punto, sin que el mundo exterior se dé cuenta.

Desde el punto de vista de la seguridad, en el futuro podría insertarse una cláusula where, que comienza a proporcionarle filtrado/seguridad a nivel de fila, mientras que el acceso directo a la tabla impide dicho movimiento futuro.

2

Una ventaja (o desventaja, según su punto de vista) es que las Vistas le permiten almacenar lógica comercial dentro del servidor SQL, en lugar de dentro de su código. Si necesita cambiar el negocio fácilmente sin volver a compilar su código, modificar la vista es una forma rápida y fácil de hacerlo.

yo personalmente prefiero tener la lógica empresarial de la aplicación definida dentro del código embargo :)

0

Las vistas pueden ser considerados como una capa lógica encima de la capa física (tabla) En su caso, en el momento en que la capa es tan delgado que su valor puede ser cuestionado. Sin embargo, con el tiempo, tal puede no ser el caso. Usar una vista para acceder a la tabla no le cuesta prácticamente nada, pero aísla su código de posibles cambios en el modelo físico.

+0

Este enfoque tiene costos en términos de rendimiento y mantenibilidad. Las abstracciones en la capa ORM o Stored Proc deberían ser suficientes para aislar la base de código de los cambios en el modelo físico. –

+0

@Ian: Todo tiene un costo; la pregunta es si se ve superado por el beneficio. No he leído ningún estudio creíble que identifique las vistas como un punto de dolor de rendimiento. Por supuesto, el uso inapropiado de una API puede poner a un servidor de rodillas, pero eso no es culpa de la API. –

Cuestiones relacionadas