Voy para el diseño de un DW y me enteré de vistas materializadas. En realidad quiero crear una vista y se debe actualizar de forma automática cuando las tablas base cambiado. ¿Alguien puede explicar con un ejemplo de consulta..

InformationsquelleAutor Deepak | 2010-10-21

5 Comentarios

  1. 125

    Se llaman vistas indizadas en SQL Server a leer estos papeles blancos para más de fondo:

    Básicamente, todo lo que necesitas hacer es:

    • crear una vista normal
    • crear un índice agrupado en esa vista

    y listo!

    La parte difícil es: el punto de vista ha de satisfacer una serie de restricciones y limitaciones – de aquellos que se describen en el libro blanco. Si usted hace esto – que es todo lo que hay. La vista se actualiza automáticamente, sin necesidad de mantenimiento.

    Recursos adicionales:

    • Gracias por su respuesta. Tengo lo que quiero.. me gustaría saber acerca de los índices así. Quiero saber ¿hay alguna manera para generar el esquema en estrella diagrama en SQL server cuando tengo toda la estructura de la tabla listo ? Si Sí, ¿cómo puedo crear tabla de hechos para que ?
    • Las restricciones en poner un índice agrupado en la vista son extensas. Por ejemplo, la vista no puede hacer referencia a otros puntos de vista y no pueden contener combinaciones externas. Así, muchas de las opiniones que se necesita un mejor rendimiento no puede utilizar este método. Sigue siendo una buena respuesta.
    • Como se ha mencionado en relación con esta cuestión, el blog de MSDN artículo, blogs.msdn.microsoft.com/ssma/2011/06/20/…, pone de relieve algunas de las diferencias clave entre las vistas materializadas y vistas indizadas. Los más problemáticos, en mi humilde opinión, es no ser capaz de especificar la actualización de los desencadenantes: vistas indizadas se actualizan cada vez que la base se actualizan las tablas – socava la mayoría de los beneficios de rendimiento de la utilización de una vista materializada. Prohibiciones en las combinaciones de agregados, ventanas de funciones, y subconsultas hace que las vistas indizadas casi inútil a menos que los datos no cambian con frecuencia.
  2. 37

    Aunque únicamente desde la perspectiva de la ingeniería, vistas indizadas sonar como algo que todo el mundo podría utilizar para mejorar el rendimiento, pero la vida real es muy diferente. He tenido éxito es el uso de vistas indizadas donde me necesitan porque hay demasiadas restricciones sobre lo que puede ser indexado y lo que no.

    Si usted tiene combinaciones externas en los puntos de vista, que no puede ser utilizado. También, las expresiones de tabla comunes no están permitidos… De hecho, si usted tiene cualquier pedido en subselecciones o tablas derivadas (como con la partición de la cláusula), usted está fuera de suerte también.

    Que deja muy simple escenarios a utilizar las vistas indizadas, algo que en mi opinión puede ser optimizado mediante la creación de índices adecuados en las tablas subyacentes de todos modos.

    Estaré encantado de escuchar algunas situaciones de la vida real donde la gente en realidad han usado vistas indizadas para su beneficio y no podría haberlo hecho sin ellos

    • En realidad he utilizado Vistas Indizadas (sólo una vez) para crear una partición de un Completo índice de Búsqueda de Texto. FTS índices de hecho, no puede ser dividido, pero por separado los índices se pueden crear varias vistas de la misma tabla. Era una especie de último recurso, sin embargo.
    • Usted necesita recordar para agregar (NOEXPAND) sugerencia para las consultas que utilizan las vistas indizadas. Y luego te das cuenta de la diferencia. La ventaja de utilizar las vistas indizadas vs «correctamente la indexación de las tablas» es en la limitación de la selección de registros, de lo contrario, estás en lo correcto, sería el mismo.
  3. 18

    Usted puede ser que necesite un poco más de fondo sobre lo que una Vista Materializada en realidad es. En Oracle estos son un objeto que consta de un número de elementos cuando se intenta construir en otro lugar.

    Un MVIEW es esencialmente una instantánea de los datos de otra fuente. A diferencia de la visión de que los datos no se encuentra cuando se consulta la opinión de que se almacena localmente en forma de tabla. El MVIEW se actualiza mediante un fondo de procedimiento que se inicia a intervalos regulares o cuando cambian los datos de origen. Oracle permite parcial o total de la refresca.

    En SQL Server, me gustaría utilizar el siguiente para crear un básico MVIEW a (completa) actualizar periódicamente.

    Primero, un punto de vista. Esto debería ser fácil para la mayoría ya que las vistas son muy comunes en cualquier base de datos
    Al lado, una mesa. Este debe ser idéntica a la vista en columnas y datos. Este almacena una instantánea de la vista de datos.
    A continuación, un procedimiento que trunca la tabla, y se vuelve a cargar se basa en la corriente de datos en la vista.
    Por último, un trabajo que desencadena el procedimiento para iniciar su trabajo.

    Todo lo demás es la experimentación.

    • Sus comentarios acerca de SQL Server son incorrectos–vistas materializadas son cosas muy diferentes en Oracle y SQL Server. En SQL Server, una vista con un índice agrupado único en él (un.k.una. una «vista materializada») no puede y no puede ser actualizado por el usuario, ni se guardan en una tabla creada por el usuario–está siempre actualizado por el motor durante las actualizaciones, y nunca está fuera de sincronización. No hay trabajo para guardar una instantánea de los datos.
    • Lo que el OP ha pedido es fácilmente proporcionada por una vista indizada. Esa es la cosa más cercana de SQL Server de forma nativa proporciona a un Oráculo de la vista materializada. Sin embargo, si usted quiere/necesita para duplicar exactamente la manera en que Oracle MVIEW obras, Jason es el adecuado. Jason enfoque también ayuda en el mismo escenario de Oracle MVIEWs puede – por ejemplo hacer fuera de las horas de actualización de una tabla de informes donde se preocupan más acerca de la carga de base de datos de la fecha de la vista (por ejemplo, la presentación de informes solamente de ayer, números…)
  4. 3

    Cuando la vista indizada no es una opción, y actualizaciones rápidas no son necesarios, puede crear un hack de caché de la tabla:

    select * into cachetablename from myviewname
    alter table cachetablename add primary key (columns)
    -- OR alter table cachetablename add rid bigint identity primary key
    create index...

    luego sp_rename ver/tabla o cambiar cualquier consulta o de otros puntos de vista que hacen referencia a él para que apunte a la tabla de caché.

    horario diario/nocturno/semanal/estante de actualización como

    begin transaction
    truncate table cachetablename
    insert into cachetablename select * from viewname
    commit transaction

    NB: este va a comer el espacio, también en su tx registros. La mejor opción para pequeños conjuntos de datos que son lentos para calcular. Tal vez refactorizar para eliminar «fácil, pero de gran» columnas primero en una vista exterior.

  5. 1

    Para MS de T-SQL Server, te sugiero buscar en la creación de un índice con el de «inclusión» de la declaración. La singularidad no es necesario, ni es la física de la clasificación de los datos asociados con un índice agrupado. El «Índice … Include ()» crea un físico de almacenamiento de datos se mantiene de forma automática por el sistema. Es conceptualmente muy similar a la de un Oráculo de la Vista Materializada.

    https://msdn.microsoft.com/en-us/library/ms190806.aspx

    https://technet.microsoft.com/en-us/library/ms189607(v=sql.105).aspx

Dejar respuesta

Please enter your comment!
Please enter your name here