Senior
Qual é a diferença entre um índice B-tree e um índice hash no PostgreSQL? Que outros índices conheces?
sobes.tech IA
Resposta da IA
No PostgreSQL, os índices B-tree e hash diferem em estrutura e uso:
-
Índice B-tree:
- É o índice padrão no PostgreSQL.
- Baseado numa árvore equilibrada (árvore B), suporta consultas de intervalo, ordenação e pesquisa por igualdade.
- Adequado para a maioria das operações, incluindo
=,<,>,BETWEEN,ORDER BY.
-
Índice Hash:
- Usa uma tabela de hash para buscas rápidas por igualdade (
=). - Não suporta consultas de intervalo nem ordenação.
- Em versões antigas do PostgreSQL era menos confiável, mas nas versões novas foi melhorado.
- Usa uma tabela de hash para buscas rápidas por igualdade (
Outros tipos de índices no PostgreSQL:
- GIN (Índice Invertido Generalizado): para indexar arrays, JSONB, busca de texto completo.
- GiST (Árvore de Pesquisa Generalizada): para dados geométricos, busca de texto completo e outros tipos extensíveis.
- SP-GiST: para estruturas de dados específicas, por exemplo, para índices espaciais.
- BRIN (Índice de Intervalo de Blocos): para tabelas muito grandes com dados ordenados, economiza espaço.
A escolha do índice depende do tipo de dados e consultas. B-tree é universal, hash é útil para igualdade rápida, GIN e GiST para estruturas complexas e busca de texto completo.