Muitos bancos de dados oferecem vários tipos de índices. O mais comuns são:
Índices em árvore B. O tipo mais utilizado baseia-se em estruturas de dados balanceadas de índices em árvore B. São indicados quando os valores-chave do índices são distribuídos aleatoriamente e tendem a variar muito. Seu desempenho não é bom quando os dados que estão sendo indexados já estão em uma ordem seqüencial.
Índices de hashing. Com menos freqüência, os valores-chave do índice são misturados. Com o hashing, o desempenho é melhor do que quando vários valores-chave de índice são conhecidos, e permanecem relativamente inalterados e exclusivos. Esse procedimento baseia-se na utilização do valor-chave para calcular o endereço dos dados desejados. Devido à necessidade de previsibilidade, os índices de hashing são úteis apenas para as tabelas de pesquisa médias, com poucas mudanças.
No geral, a utilização de índices é mais apropriada para tabelas onde há mais consultas do que atualizações.
Índices são estruturas opcionais assiciadas a tabelas e clusters que permitem que instruções SQL retornem mais rapidamente seus resultados.
Essas estruturas são independentes lógica e fisicamente dos dados a que estão associadas: assim, elas necessitam de espaço de armazenamento adicional.
O db Oracle trabalha com os seguintes tipos de índice>
B-tree: padrão, o mais comum
B-tree cluster: definido especificamente para cluster
Hash cluster indexes: ddefinido especificamente para um hash cluster
Global and local indexes: relativos a tabelas e índices particionados
Reverse key indexes: mais útil para aplicações Oracle Real Application Clusters
Bitmap indexes: compacto, funciona bem para colunas com poucos valores
Function-based indexes: contém valores pré-calculados de uma função ou expressão