Manual MyTable

MySQL • Índices

Os índices aceleram buscas, junções e ordenações no MySQL. Nesta tela você pode criar, editar e remover índices (BTREE, FULLTEXT e, em engines específicas, HASH), além de analisar seletividade e uso esperado. Um bom desenho de índices reduz table scans e melhora a latência das consultas.


Abrir “Índices”

  1. Conecte-se à sua conexão MySQL e selecione o banco.
  2. Em Visualizar Tabelas, escolha a tabela.
  3. No menu de ações, toque em Índices.

Tipos de índice (MySQL)

  • BTREE (padrão/InnoDB) — ideal para buscas por igualdade, intervalos e ORDER BY.
  • UNIQUE — garante unicidade dos valores (também é BTREE); útil para colunas como email, documento.
  • FULLTEXT (InnoDB/MyISAM) — busca textual avançada em colunas CHAR/VARCHAR/TEXT.
  • HASH — disponível em MEMORY e como otimização interna; não ordena nem atende intervalos.

Dica: No InnoDB, FKs exigem índices nas colunas referenciadas e de referência.


Quando criar um índice

  • Colunas frequentemente usadas em WHERE ou JOIN.
  • Colunas usadas em ORDER BY/GROUP BY com alto volume.
  • Colunas que devem ser únicas (use UNIQUE).
  • Busca textual em grandes campos de texto (use FULLTEXT).

Composto, ordem e cobertura

  • Índice composto: mais de uma coluna. A ordem das colunas importa. Regra prática: primeiro as colunas mais seletivas e/ou usadas em filtros de igualdade.
  • Leftmost prefix: consultas podem aproveitar o prefixo à esquerda do índice composto (ex.: índice em (a,b,c) atende filtros por a e por a,b).
  • Índice de cobertura: quando todas as colunas usadas no WHERE/JOIN/ORDER BY e no SELECT estão no índice, reduzindo leituras na tabela.

Criar índice

  1. Toque em Novo Índice.
  2. Escolha o tipo (BTREE/UNIQUE/FULLTEXT).
  3. Selecione a(s) coluna(s) e defina a ordem (ASC/DESC*).
    *DESC é suportado em versões recentes; verifique compatibilidade do seu servidor.
  4. (Opcional) Comprimento de prefixo para colunas de texto (ex.: email(20)) — útil quando o valor completo é grande.
  5. Defina um nome claro (ex.: idx_pedidos_cliente_data).
  6. Salvar.

Boas práticas: evite índices redundantes (que começam com as mesmas colunas de outro já existente) e limite o número total para não degradar INSERT/UPDATE/DELETE.


Editar ou remover índice

  • Selecione o índice na lista e toque em Editar para alterar colunas/ordem (a UI pode recriar o índice).
  • Use Remover para apagar. Confirme que nenhuma consulta crítica depende dele.

FULLTEXT (busca textual)

  • Crie em colunas CHAR/VARCHAR/TEXT com muitos termos.
  • As consultas usam MATCH(colunas) AGAINST('termos' IN NATURAL LANGUAGE MODE | BOOLEAN MODE).
  • Útil para busca por relevância; não substitui filtros estruturados.

Índices e ordenação

  • Para ORDER BY eficiente, a ordem precisa ser compatível com as colunas do índice.
  • Ordenações conflitantes entre colunas podem impedir uso do índice (ex.: a ASC, b DESC em índice que não suporta DESC).

Seletividade e cardinalidade

  • Índices são mais úteis quando a coluna tem alta seletividade (muitos valores distintos).
  • Colunas pouco seletivas (ex.: booleanas) raramente se beneficiam isoladamente — considere índice composto.

Impacto em escrita

  • Cada INSERT/UPDATE/DELETE precisa manter os índices — muitos índices reduzem a taxa de escrita.
  • Revise periodicamente índices pouco usados e remova os desnecessários.

Erros e situações comuns

“Duplicate entry … for key 'uk_xxx'”

  • Violação de UNIQUE. Revise os dados e a regra de negócio; ajuste o índice se a unicidade não for real.

“Index length too large”

  • Use prefix length em colunas de texto grandes ou mude o charset/collation para reduzir bytes por caractere.

“Cannot drop index … needed in foreign key constraint”

  • FK depende do índice. Ajuste/remova a FK primeiro (veja Constraints).

“Consulta ainda lenta com índice criado”

  • Confirme se o plano usa o índice (ex.: EXPLAIN no Editor SQL), reavalie ordem das colunas e crie índice composto mais adequado.

Boas práticas resumidas

  • Poucos índices bem pensados > muitos índices redundantes.
  • Use compostos com a ordenação certa; aproveite leftmost prefix.
  • Crie índices nas FKs e colunas muito filtradas/ordenadas.
  • Revisite periodicamente o catálogo de índices conforme o uso real.

Ferramentas relacionadas

Próximo: MySQL • Partições • Voltar: MySQL • Constraints