Í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:
- Tempo de Busca (Seek Time): Encontrar a trilha correta.
- Atraso Rotacional (Rotational Latency): Localizar o setor geométrico.
- 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;