Vistas Materializadas de Oracle vs vistas indexadas Sql Server

27.12.2013 20:56
 

 

Oracle dispone de un objeto de base de datos denominado vista materializada, que a diferencia de una vista normal, almacena el conjunto de resultados de la consulta que define la vista.

Las tablas / vistas mencionadas en la consulta se conocen colectivamente como las tablas maestras. Una vista materializada es  una réplica de la tabla original  desde un único punto en el tiempo. Los datos de la vista materializada se pueden actualizar desde las tablas originales  a través de un proceso llamado Actualizar. Oracle ofrece diferentes modos de actualización y opciones de intervalo como la actualización periódica automática y la actualización sobre demanda.

 


Las  vistas materializadas   se usan en los siguientes casos:


1.   Replicación de datos
2.  Cacheado de un conjunto de consultas costosas en un entorno de datawarehouse

3. Tuning de consultas de ejecución largas y complejas para mejorar el tiempo de ejecución / respuesta.

Una vista materializada puede ser, actualizable y de escritura. Con base en el entorno en  que se utilizan  Oracle ofrece diferentes tipos de vistas materializadas

Primary Key materialized view, Object materialized view, ROWID materialized view, Complex Materialized view , materialized join view  y materialized aggregate view

SQL Server dispone de vistas indexadas  que pueden proporcionar funcionalidades similares a las vistas materializadas . SQL Server permite  la creación de un índice en una vista. La creación de un índice en una vista, se traduce en el almacenamiento de datos lógicos desde la vista en archivos de índice físicos materializando así los resultados de la consulta.

https://francescsanchezbi.webnode.es/news/uso-de-vistas-indizadas-para-aumentar-el-rendimiento-de-una-base-de-datos/



Seguidamente vemos un  ejemplo de creacion de vistas en Oracle y Sql Server

 

Oracle

SQL Server

CREATE TABLE MAT_VIEW_MASTER_TABLE
(
COL1 NUMBER PRIMARY KEY,
COL2 VARCHAR2(25)
);

CREATE TABLE dbo.MAT_VIEW_MASTER_TABLE
(
COL1 INT PRIMARY KEY,
COL2 VARCHAR(25)
);

CREATE MATERIALIZED VIEW MAT_VIEW_1  
AS
SELECT COL1, COL2 FROM MAT_VIEW_MASTER_TABLE;

CREATE VIEW dbo.MAT_VIEW_1 WITH SCHEMABINDING
AS
SELECT COL1, COL2 FROM dbo.MAT_VIEW_MASTER_TABLE
GO

CREATE UNIQUE CLUSTERED INDEX MAT_VIEW_INDX_1 ON dbo.MAT_VIEW_1 (COL1)
GO