Pregunta

Voy a diseñar un DW y oí sobre vistas materializadas. En realidad, yo quiero crear una vista y se debería actualizar automáticamente cuando se cambian las tablas base. ¿Alguien puede explicar con un ejemplo de consulta ..

¿Fue útil?

Solución

Se llaman vistas indizadas en SQL Server - leer estas notas del producto para obtener más antecedentes:

Básicamente, todo lo que hay que hacer es:

  • crear una vista normal
  • crear un índice agrupado en ese punto de vista

y ya está!

La parte difícil es: la vista tiene que satisfacer un buen número de restricciones y limitaciones - los que se describen en el libro blanco. Si usted hace esto - eso es todo lo que hay. La vista se actualiza automáticamente, sin necesidad de mantenimiento necesario.

recursos adicionales:

Otros consejos

Aunque puramente desde la perspectiva de la ingeniería, las vistas indizadas suenan como algo que todo el mundo podría utilizar para mejorar el rendimiento, pero el escenario de la vida real es muy diferente. He tenido éxito está utilizando vistas indizadas en el que más lo necesita debido a demasiadas restricciones en lo que puede ser indexado y lo que no.

Si usted tiene combinaciones externas en los puntos de vista, no se puede utilizar. Además, las expresiones de tabla común no se les permite ... De hecho, si usted tiene cualquier pedido en subselects o tablas derivadas (por ejemplo, con la partición en la cláusula), que están fuera de suerte también.

Eso deja sólo los escenarios muy simples a estar utilizando las vistas indizadas, algo que en mi opinión se puede optimizar mediante la creación de índices adecuados en la que subyace en las tablas de todos modos.

I estarán encantados de escuchar algunos de los escenarios de la vida real donde las personas han utilizado las vistas indizadas en su beneficio y no podría haber hecho sin ellos

Es posible que necesite un poco más antecedentes sobre lo que es una vista materializada en realidad es. En Oracle son un objeto que se compone de una serie de elementos cuando se intenta construir en otro lugar.

Un MVIEW es esencialmente una instantánea de datos de otra fuente. A diferencia de un punto de vista no se encuentran los datos cuando se consulta la opinión de que se almacena localmente en forma de tabla. El MVIEW se actualiza usando un procedimiento de fondo que se inicia a intervalos regulares o cuando los cambios de datos de origen. Oracle permite actualizaciones completas o parciales.

En SQL Server, yo usaría el siguiente para crear un VMULT básica a (completa) actualizar regularmente.

En primer lugar, una visión. Esto debería ser fácil para la mayoría desde puntos de vista son muy comunes en cualquier base de datos A continuación, una tabla. Esto debería ser idéntica a la vista en columnas y datos. Esto guardará una instantánea de la vista de datos. A continuación, un procedimiento que trunca la tabla, y las recargas se basan en los datos actuales en la vista. Por último, un trabajo que desencadena el procedimiento para iniciarlo de trabajo.

Todo lo demás es la experimentación.

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

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

ver a continuación sp_rename / mesa o cambiar cualquier consulta u otras vistas que hacen referencia al punto a la tabla de caché.

programación diaria / noche / semana / lo que sea de refresco como

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

Nota: este va a comer el espacio, también en los registros de tx. Los más utilizados para pequeños conjuntos de datos que son lentos para calcular. Tal vez refactor para eliminar columnas "fáciles", pero grandes por primera vez en una vista exterior.

Para MS T-SQL Server, yo sugeriría que buscan en la creación de un índice con la afirmación "incluir". Singularidad no se requiere, ni es la clasificación física de los datos asociados con un índice agrupado. El "Índice ... include ()" crea un almacenamiento de datos físico separado mantenido automáticamente por el sistema. Es conceptualmente muy similar a una vista materializada Oracle.

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

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

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top