Manual MyTable

PostgreSQL • Índices

Índices aceleram buscas, ordenações e junções no PostgreSQL. Aqui você cria, edita e remove índices (BTREE, GIN, GiST, BRIN), incluindo compostos, parciais e por expressão, sem escrever SQL manual.


Abrir “Índices”

  1. Conecte-se à sua conexão PostgreSQL e selecione o banco.
  2. Escolha o schema e a tabela.
  3. No menu da tabela, toque em Índices.

Tipos de índice (quando usar)

  • BTREE (padrão): igualdade/intervalo, ORDER BY, junções. A escolha geral para chaves e filtros comuns.
  • GIN: buscas em JSONB, ARRAY, full-text search (com operadores adequados).
  • GiST: dados geoespaciais, similaridade, intervalos complexos.
  • BRIN: tabelas enormes com dados naturalmente ordenados (ex.: por data), ótimo custo/benefício de espaço.

Dica: Para consultas típicas (igualdade/intervalo), comece com BTREE. Para JSONB ou arrays, avalie GIN.


Ver índices existentes

  • Lista com nome, tipo, colunas/expressões e, quando houver, predicado (parcial).
  • Toque em um índice para ver detalhes e opções de Editar ou Remover.

Criar novo índice

  1. Toque em Novo Índice.
  2. Escolha o tipo (BTREE/GIN/GiST/BRIN).
  3. Selecione colunas ou defina uma expressão (ex.: lower(email)).
  4. (Opcional) Marque como Único (UNIQUE) quando precisar impedir duplicidades.
  5. (Opcional) Defina Índice Parcial informando um predicado (ex.: ativo = true).
  6. Confirme em Criar.

Boas práticas: Em índice composto, posicione primeiro a coluna mais seletiva. Para case-insensitive, use expressão (ex.: lower(col)) combinada com a mesma função nos filtros.


Índice por expressão

  • Permite indexar funções/transformações (ex.: lower(nome), (data::date)).
  • Garante uso do índice quando a mesma expressão é usada no WHERE/ORDER BY.

Índice parcial

  • Cria um índice só para um subconjunto (ex.: status = 'ATIVO'), reduzindo espaço e custo de manutenção.
  • Use quando a maioria das consultas mira apenas um subconjunto dos dados.

Editar/Remover índice

  • Editar: ajuste colunas/expressões, unicidade ou predicado. Em muitos casos, o app recria o índice.
  • Remover: exclui o índice selecionado. Atenção: pode impactar desempenho de consultas.

Performance & manutenção

  • Evite índices redundantes (mesma combinação de colunas/expressão).
  • Índices aumentam custo de INSERT/UPDATE/DELETE; crie apenas os necessários.
  • Após grandes cargas/mudanças, atualize estatísticas (veja Analisar Tabela — conceito análogo no Postgres).
  • Monitore consultas com planos de execução; ajuste índices conforme o uso real.

Erros comuns (e soluções)

“Índice não é utilizado”

  • Confirme que o WHERE usa a mesma expressão do índice (no caso de índice por expressão).
  • Reordene colunas em índices compostos para refletir os filtros mais seletivos.

“Índice duplicado/redundante”

  • Remova o que não agrega desempenho. Evite manter UNIQUE e outro BTREE igual.

“Criação de índice muito lenta”

  • Em tabelas gigantes, avalie janelas de manutenção e (quando aplicável) criação concurrente (o app indicará quando suportado).

“Espaço em disco elevado”

  • Reveja índices pouco usados e considere BRIN quando fizer sentido.

Ferramentas relacionadas

Próximo: PostgreSQL • Views • Voltar: PostgreSQL • Constraints