Materialized Views (ou Views Materializadas) são uma extensão avançada das views tradicionais em SQL. Ao contrário das views comuns, que não armazenam dados e são calculadas dinamicamente cada vez que são consultadas, as Materialized Views armazenam fisicamente os dados resultantes da consulta em uma tabela de banco de dados. Isso pode oferecer vantagens significativas em termos de desempenho, especialmente em cenários onde os dados subjacentes são volumosos ou onde as consultas são complexas e exigem muitos recursos.
A criação de uma Materialized View é semelhante à criação de uma view comum, mas com a adição de uma cláusula que especifica que os dados devem ser materializados.
Sintaxe Básica:
CREATE MATERIALIZED VIEW nome_da_view AS
SELECT colunas
FROM tabela_ou_joins
WHERE condicoes
[REFRESH [FAST|COMPLETE] [ON DEMAND | ON COMMIT]];
Exemplo: Suponha que temos uma tabela Vendas
e queremos criar uma Materialized View que resuma o total de vendas por mês.
CREATE MATERIALIZED VIEW Vendas_Mensais AS
SELECT
EXTRACT(MONTH FROM data_venda) AS mes,
EXTRACT(YEAR FROM data_venda) AS ano,
SUM(valor_total) AS total_vendas
FROM
Vendas
GROUP BY
EXTRACT(YEAR FROM data_venda), EXTRACT(MONTH FROM data_venda)
WITH DATA;
Explicação:
As Materialized Views podem se tornar obsoletas à medida que os dados subjacentes mudam. Existem diferentes maneiras de atualizar uma Materialized View:
REFRESH ON DEMAND: A Materialized View é atualizada manualmente pelo DBA ou através de um agendamento.
REFRESH MATERIALIZED VIEW Vendas_Mensais;