Neste capítulo
- O que são views (
CREATE VIEW), vantagens das views, criando abstrações e simplificando consultas.- Índices, melhorando a velocidade de busca e performance (
CREATE INDEX).- Quando criar ou não uma view ou índice
À medida que os bancos de dados crescem e as consultas se tornam mais complexas, a performance se torna um fator crítico. Consultas lentas podem degradar a experiência do usuário e sobrecarregar o sistema. Para enfrentar esses desafios, o PostgreSQL e outros SGBDs oferecem ferramentas poderosas, como Visões e Índices. Este capítulo explora como essas ferramentas funcionam e como aplicá-las para melhorar a eficiência e a manutenção do seu banco de dados, garantindo que suas consultas sejam rápidas e seu sistema seja escalável.
Uma visão, ou VIEW, é uma tabela virtual baseada no conjunto de resultados de uma consulta SELECT. Ela não armazena os dados fisicamente por si só; em vez disso, ela armazena a definição da consulta. Quando você consulta uma visão, o SGBD executa a consulta subjacente e retorna o resultado.
Principais motivos:
JOINs, GROUP BYs, etc.), tornando-as mais simples de usar. Em vez de reescrever a consulta complexa, basta selecionar os dados da visão.Para criar uma visão, usa-se a sintaxe CREATE VIEW.
Exemplo: Criar uma visão para mostrar o histórico de pedidos de cada cliente.
CREATE VIEW historico_pedidos_clientes AS
SELECT
c.nome AS nome_cliente,
p.id_pedido,
p.data_pedido,
p.valor_total
FROM
clientes c
JOIN
pedidos p ON c.id_cliente = p.id_cliente;
Depois de criada, a visão pode ser consultada como uma tabela normal:
SELECT nome_cliente, id_pedido
FROM historico_pedidos_clientes
WHERE nome_cliente = 'João Silva';
Para remover uma visão, use o comando DROP VIEW.
DROP VIEW historico_pedidos_clientes;
Um índice é uma estrutura de dados que melhora a velocidade de operações de recuperação de dados em uma tabela, assim como o índice de um livro acelera a busca por um tópico. Em vez de ler a tabela inteira (full table scan), o SGBD pode usar o índice para encontrar rapidamente a localização dos dados relevantes.
JOINs.WHERE: Se uma coluna é usada frequentemente em condições de filtro (WHERE), um índice pode acelerar a busca por essas linhas.