Sobes.tech
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.

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.