Exemplo.
Considere o mesmo arquivo do exemplo anterior, com 30.000 registros de tamanho fixo, de 100 bytes de tamanho, armazenados em um disco com tamanho de bloco de 1.024 bytes. O arquivo tem 3.000 blocos, conforme já calculamos anteriormente. Suponha que queiramos procurar um registro com um valor específico para a chave secundária — um campo de chave não ordenado do arquivo que tem 9 bytes de extensão. Sem o índice secundário, para fazer uma pesquisa linear no arquivo, seriam necessários 3.000/2 = 1.500 acessos de bloco na média (pode ser 1 acesso, se o registro pesquisado for o primeiro, como pode ser 3.000 acessos, se o registro pesquisado for o último).
Suponha que construíssemos um índice secundário nesse campo de chave não ordenado do arquivo.
Como no exemplo anterior, um ponteiro de bloco tem 6 bytes de extensão, de modo que cada entrada de índice tem (9 + 6) = 15 bytes (9 do valor pesquisado e 6 do bloco de endereçamento), e o fator de bloco para o índice é de 1.024/15 = 68 entradas por bloco (cada bloco possui 68 informações de índices). Em um índice secundário denso como este, o número total de entradas de índice é igual ao número de registros no arquivo de dados, que é 30.000. O número de blocos necessários para o índice é, portanto, 30.000/68 = 442 blocos (ou seja, a tabela física ocupa 442 blocos).
Uma pesquisa binária nesse índice secundário precisa de Log2 442 = 9 acessos de bloco. Para procurar um registro usando o índice, precisamos de um acesso de bloco adicional ao arquivo de dados para um total de 9 + 1 = 10 acessos de bloco — uma grande melhoria em relação aos 1.500 acessos de bloco necessários na média para uma pesquisa linear, mas ligeiramente pior que os 7 acessos de bloco exigidos para o índice primário. Essa diferença surgiu porque o índice primário não era denso e, portanto, menor, com apenas 45 blocos de extensão.
|
Observe que um índice secundário oferece uma ordenação lógica nos registros pelo campo de índice. Se acessarmos os registros na ordem das entradas no índice secundário, nós os obteremos na ordem do campo de índice. Os índices primário e de agrupamento assumem que o campo utilizado para a ordenação física dos registros no arquivo é o mesmo que o campo de índice. |