Índices
À medida que seu banco de dados cresce, também aumenta o tempo necessário para pesquisar os dados. Se você estiver filtrando pedidos, unindo registros de clientes ou procurando entradas de log, o desempenho é importante - e é aí que entram os índices.
Neste artigo, apresentaremos o que são índices no PostgreSQL, por que eles são importantes e como você pode usá-los para tornar suas consultas mais rápidas e eficientes.
O que são índices no PostgreSQL?
Um índice é uma estrutura de dados que torna mais rápida a localização de linhas específicas em uma tabela - semelhante ao índice no final de um livro. Em vez de examinar a tabela inteira, o PostgreSQL usa o índice para que você vá direto para as linhas relevantes.
Os índices não alteram os dados reais da tabela, mas criam uma referência rápida que pode reduzir significativamente o tempo de consulta, especialmente em grandes conjuntos de dados.
Por que os índices são importantes?
Sem índices, o PostgreSQL precisa verificar cada linha em uma tabela para encontrar resultados correspondentes. Isso é bom para pequenos conjuntos de dados, mas quando você começa a lidar com milhares ou milhões de linhas, essas varreduras de tabelas completas tornam as coisas mais lentas.
Os índices ajudam você:
-
Reduzir o tempo de resposta das consultas
-
Melhorar o desempenho da filtragem (
WHERE), da classificação (ORDER BY) e da união de tabelas -
Suporte a pesquisas rápidas em colunas consultadas com frequência
-
Melhorar o desempenho das pesquisas de texto completo e JSON (com índices GIN)
Usados corretamente, os índices podem acelerar o aplicativo e reduzir a carga no servidor de banco de dados.
Casos de uso no mundo real
Os índices são amplamente usados em todos os tipos de aplicativos:
-
Comércio eletrônico: Procure rapidamente produtos por categoria, faixa de preço ou termo de pesquisa
-
Finanças: Filtrar transações por conta ou intervalo de datas
-
Análises: Acelere as agregações e as consultas baseadas em tempo
-
Sistemas de CRM: Junte grandes tabelas de contatos com registros de interação ou dados de campanha
-
APIs: Melhorar os tempos de resposta para resultados filtrados ou paginados
Em quase todos os sistemas de produção, os índices são uma parte essencial da manutenção da velocidade e da capacidade de resposta à medida que os dados são dimensionados.
O que você aprenderá nesta seção
Esta seção da documentação guiará você pelos principais conceitos, sintaxe e práticas recomendadas para o uso de índices no PostgreSQL. Os tópicos incluem:
-
CREATE INDEX - Como criar índices básicos e personalizados
-
Índices B-Tree - O tipo de índice padrão e mais comumente usado
-
Índices Hash - Para pesquisas rápidas de igualdade (menos comumente usados)
-
Índices GIN - Para indexação de JSON, matrizes e pesquisa de texto completo
-
Índices GiST - Para tipos de dados complexos, como pesquisa geométrica ou fuzzy
-
Índices BRIN - Para dados grandes e naturalmente ordenados (como registros de séries temporais)
-
Índices de expressão - Índice baseado em uma função ou expressão
-
Índices parciais - Indexam apenas um subconjunto de linhas (útil para filtragem)
-
REINDEX - Reconstrução de índices quando necessário
-
Eliminação de índices não utilizados - Mantendo seu banco de dados enxuto
-
Considerações sobre desempenho - Equilíbrio entre velocidade e desempenho de armazenamento e gravação
Você também aprenderá a usar o site EXPLAIN para entender se os índices estão sendo usados de forma eficaz nas consultas.