Índices em Bancos de Dados: Tipos e Uso

Classificado em Computação

Escrito em em português com um tamanho de 2,7 KB.

Acesso ao Disco

O processo de acesso ao disco envolve três etapas principais:

  1. Tempo de Busca (Seek Time): Encontrar a trilha correta.
  2. Atraso Rotacional (Rotational Latency): Localizar o setor geométrico.
  3. Transferência de Dados: Transferir os dados propriamente ditos.

Tipos de Índices

Índice Primário

É especificado sobre a chave de ordenação (valores distintos, sem repetição) que define a ordem física de um arquivo ordenado de registros. O número de entradas é igual ao número de blocos. Inclusões e exclusões são um grande problema para índices primários, pois precisam manter a ordenação. A solução é marcar registros excluídos. A reorganização ocorrerá somente na reconstrução do índice.

Índice de Agrupamento (Clustering)

É especificado sobre o campo de agrupamento (valores do campo de indexação podem se repetir) que define a ordem física de um arquivo ordenado de registros. O número de entradas é igual ao número de valores distintos. Inclusões e exclusões apresentam o mesmo problema dos índices primários. Uma solução comum é reservar um bloco inteiro (ou cluster de blocos) para cada valor distinto do campo de ordenação.

Índice Secundário (Chave)

É especificado sobre outros campos que não definem a ordem física de qualquer arquivo de registros. Consome mais espaço em disco e mais tempo de acesso (em relação a um índice primário) devido ao maior número de entradas. Cada entrada tem um apontador para o bloco.

Índice Secundário (Não Chave)

Índice secundário em um campo que não define a ordem física do arquivo e possui valores repetidos. O acesso é indireto via blocos intermediários. Existe uma entrada no índice para cada valor distinto do campo de indexação, apontando para um bloco auxiliar contendo ponteiros para os diferentes registros com o mesmo valor.

Quando Indexar?

Considere indexar colunas usadas em:

  • Agregação com GROUP BY
  • Ordenação com ORDER BY
  • Comparação com LIKE
  • Ordenação de valores
  • Junção entre tabelas (JOIN)

Quando Não Indexar?

  • Colunas raramente referenciadas em consultas.
  • Colunas pouco seletivas (com poucos valores distintos, como "sexo").
  • Colunas definidas com tipos de dados BLOB (Binary Large Objects).
  • Colunas em tabelas com poucas linhas.

Exclusão de Índice

Para excluir um índice, use o comando DROP INDEX. Exemplo:

DROP INDEX empregado.ix_empregado_01;

Entradas relacionadas: