Pular para o conteúdo principal

Views materializadas no PostgreSQL

Aprenda a armazenar os resultados de uma consulta com a ajuda de views materializadas no PostgreSQL.
Atualizado 17 de set. de 2026  · 6 min lido

Explorar com IA

ChatGPTClaudePerplexity

Se você trabalha bastante com SQL (de preferência usando PostgreSQL) para consultar bancos de dados, provavelmente já escreveu várias consultas complexas para responder perguntas críticas. E muitas vezes você precisa usar os resultados dessas consultas com frequência no seu dia a dia. Executar uma consulta complexa várias vezes pode ser caro. E se existisse uma forma de armazenar em cache o resultado de uma consulta complexa para ganhar desempenho? É aí que entram as views materializadas.

Você pode estar pensando que existem também as views simples, que retornam o resultado de uma consulta. Mas uma view simples é diferente de uma view materializada em vários aspectos. Veja o que a documentação oficial do PostgreSQL diz sobre views simples:

A view não é materializada fisicamente. Em vez disso, a consulta é executada toda vez que a view é referenciada em uma consulta.

Isso significa que as views simples não são armazenadas fisicamente no banco. Toda vez que uma view é usada em uma consulta, a consulta que criou a view é executada. É justamente isso que pode tornar as views simples um pouco ineficientes em termos de tempo de acesso.

Por outro lado, as views materializadas trazem bastante flexibilidade ao permitir que você persista uma view fisicamente no banco de dados. E você pode operar sobre views materializadas do mesmo jeito que faria com views simples (mas com menor tempo de acesso). No restante deste tutorial, você vai estudar as views materializadas no PostgreSQL. Em um de seus webinars, o Chief Data Scientist da DataCamp, David Robinson, mostrou como usa views materializadas para armazenar com eficiência os resultados de consultas complexas.

Observação: para acompanhar este tutorial, é importante estar familiarizado com os conteúdos do curso Joining Data in SQL.

Configuração inicial do banco de dados

É melhor configurar um banco no PostgreSQL e criar uma tabela básica para que você possa consultá-la de forma eficiente. Isso também vai ajudar nas próximas seções deste tutorial. Você pode restaurar este backup de banco, que contém a tabela que será usada aqui. Se quiser aprender como restaurar um backup no PostgreSQL, siga a primeira seção deste tutorial.

Se você conseguiu restaurar o backup, deverá ver uma tabela chamada international_debt no banco (você precisará criar um banco antes, caso ainda não tenha um). Vamos dar uma olhada rápida nas primeiras linhas da tabela (uma consulta select simples resolve) -

database

A tabela traz informações sobre estatísticas de dívida de diferentes países ao redor do mundo no ano corrente, em várias categorias (veja as colunas indicator_name, indicator_code). A coluna debt mostra o valor da dívida (em USD) que um determinado país tem em uma determinada categoria. Esses dados pertencem ao domínio de economia e são usados com frequência para analisar a situação econômica de diversos países. Os dados foram coletados no Banco Mundial.

Agora que você configurou o banco com sucesso, pode seguir para as próximas seções do tutorial.

Criando views materializadas

Vamos criar uma view materializada a partir da seguinte consulta:

select country_name,
sum(debt) as total_debt
from international_debt
group by country_name order by country_name;

A consulta retorna os nomes dos países com suas dívidas totais (em ordem alfabética). A saída deve ficar assim:

Agora a view materializada:

CREATE MATERIALIZED VIEW country_total_debt
as
  select country_name,
  sum(debt) as total_debt
  from international_debt
  group by country_name order by country_name;

Você deve receber uma mensagem de sucesso como: Query returned successfully: 124 rows affected, 242 ms execution time.

Atualizando uma view materializada

Você também pode instruir o PostgreSQL a não carregar nenhum dado na view materializada no momento da criação especificando a opção WITH NO DATA:

CREATE MATERIALIZED VIEW country_total_debt_2
as
  select country_name,
  sum(debt) as total_debt
  from international_debt
  group by country_name order by country_name
WITH NO DATA;

Você verá a mensagem: Query returned successfully with no result in 41 ms. Note a diferença entre as duas saídas. Ao incluir a opção WITH NO DATA, é criada uma view materializada vazia. Você não consegue consultá-la ainda. Porém, pode preenchê-la executando:

REFRESH MATERIALIZED VIEW country_total_debt_2;

Consultando uma view materializada

Neste ponto, você deve ter duas views materializadas (country_total_debt, country_total_debt_2) criadas. Vamos executar um select simples usando qualquer uma delas:

select * from country_total_debt_2;

A consulta deve retornar algo como:

query

A saída é exatamente a mesma da consulta que encapsulamos na view materializada. Você também pode executar consultas com funções de agregação sobre views materializadas:

select max(total_debt) from country_total_debt_2;

Você deve obter: output

Excluindo uma view materializada

Views materializadas podem ser excluídas do mesmo jeito que tabelas no PostgreSQL. Você só precisa especificar Materialized View após Drop:

Drop Materialized View country_total_debt_2;

Para comparar o MySQL com seu segundo concorrente mais popular, confira nossa análise detalhada PostgreSQL vs. MySQL.

Conclusão

É isso para este tutorial. Obrigado por ler até o final. Aqui, você aprendeu sobre views materializadas no PostgreSQL e como operar com elas. Pela sua eficácia, as views materializadas são amplamente usadas em data warehousing. Se quiser aprender consultas mais complexas, confira estes cursos da DataCamp:

Tópicos
SQL

Cursos de SQL

Curso

Manipulação de dados em SQL

4 h
335K
Domine consultas SQL complexas no PostgreSQL para responder várias perguntas de ciência de dados e preparar conjuntos de dados robustos.
Ver detalhesRight Arrow
Iniciar Curso
Ver maisRight Arrow
Relacionado

blog

Certificação PostgreSQL: Tudo o que você precisa saber

Navegue pela certificação PostgreSQL com a DataCamp. Obtenha habilidades especializadas, conhecimento prático e um caminho para o domínio dos dados.
Matt Crabtree's photo

Matt Crabtree

10 min

Tutorial

Tutorial de visão geral do banco de dados SQL

Neste tutorial, você aprenderá sobre bancos de dados em SQL.
DataCamp Team's photo

DataCamp Team

3 min

Tutorial

Gerenciando bancos de dados PostgreSQL em Python com psycopg2

Descubra como criar, conectar-se e gerenciar bancos de dados PostgreSQL usando o pacote psycopg2 do Python.
Javier Canales Luna's photo

Javier Canales Luna

14 min

Tutorial

Tutorial pgvector: Integrar a Pesquisa Vetorial no PostgreSQL

Descubra como melhorar o PostgreSQL com recursos de pesquisa vetorial usando o pgvector. Este tutorial te mostra como instalar, usar as funções básicas e integrar com ferramentas de IA.
Moez Ali's photo

Moez Ali

10 min

SQLAlchemy_Tutorial.

Tutorial

Tutorial de SQLAlchemy com exemplos

Aprenda a acessar e executar consultas SQL em todos os tipos de bancos de dados relacionais usando objetos Python.
Abid Ali Awan's photo

Abid Ali Awan

13 min

Tutorial

Exemplos e tutoriais de consultas SQL

Se você deseja começar a usar o SQL, nós o ajudamos. Neste tutorial de SQL, apresentaremos as consultas SQL, uma ferramenta poderosa que nos permite trabalhar com os dados armazenados em um banco de dados. Você verá como escrever consultas SQL, aprenderá sobre
Sejal Jaiswal's photo

Sejal Jaiswal

15 min

Ver MaisVer Mais