Como trabalhar com índices de SQL

A especificação SQL não aborda o tema de índices, mas essa omissão não significa que os índices são peças raras ou mesmo opcionais de um sistema de banco de dados. Cada implementação do SQL suporta índices, mas você vai encontrar nenhum acordo universal sobre a forma de apoiá-los.

O que é um índice?

Dados aparece em uma tabela na ordem em que você inseriu as informações no SQL. Essa ordem pode não ter nada a ver com a ordem em que mais tarde você quiser processar os dados. Digamos que você deseja processar a tabela cliente no Nome do cliente ordem. O computador deve primeiro classificar a tabela em Nome do cliente ordem. Classificando os dados desta forma leva tempo. tabelas maiores levam mais tempo para classificar.

E se você tem uma tabela com 100.000 linhas? Ou uma mesa com um milhão de linhas? Em algumas aplicações, tais tamanhos de mesa não são raros. Os melhores algoritmos de ordenação teria que fazer cerca de 20 milhões comparações e milhões de swaps para colocar a mesa na ordem desejada. Mesmo se você estiver usando um computador muito rápido, você pode não querer esperar tanto tempo.

Os índices podem ser uma grande economia de tempo. A índice é uma subsidiária ou mesa de apoio que vai junto com uma tabela de dados. Para cada linha na tabela de dados, você tem uma linha correspondente na tabela de índice. A ordem das linhas na tabela de índice é diferente.

Nome do clienteEndereço 1Endereço 2CidadeEstado
Animal Clinic Butternut5 Butternut Lane, HudsonNH
Âmbar Veterinária, Inc.470 Kolvir Círculo ÂmbarMI
Veterinários R Us2300 Geoffrey EstradaSuite 230AnaheimCA
cachorrinho Doctor32 Terry Terrace NutleyNJ
O Centro EquestreVeterinário7890 Paddock ParkwayGallupNM
Instituto Dolphin1002 Marine Drive Key WestFL
J. C. Campbell, Vet crédito2500 Main Street Los AngelesCA
Farm Worm de Wenger15 Bait Boulevard SedonaAZ

Aqui as linhas não estão em ordem alfabética por Nome do cliente. Na verdade, eles não estão em nenhuma ordem útil a todos. As linhas são simplesmente na ordem em que alguém introduzir os dados.

Nome do clientePonteiro para a tabela de dados
Âmbar Veterinária, Inc.2
Animal Clinic Butternut1
cachorrinho Doctor4
Instituto Dolphin6
J. C. Campbell, Vet crédito7
O Centro Equestre5
Veterinários R Us3
Farm Worm de Wenger8

O índice contém o domínio que forma a base do índice (neste caso, Nome do cliente) E um ponteiro para a tabela de dados. O ponteiro em cada linha de índice indica o número da linha da linha correspondente na tabela de dados.

Por que você deve querer um índice

Se você quiser processar uma tabela em Nome do cliente ordem, e você tiver um índice dispostos em Nome do cliente ordem, você pode executar a operação quase tão rápido quanto você poderia se própria tabela de dados já no eram Nome do cliente ordem. Você pode trabalhar através do índice, movendo-se imediatamente para registro de dados correspondentes de cada linha de índice usando o ponteiro no índice.

Se você usar um índice, o tempo de processamento da tabela é proporcional à N, Onde N é o número de registros na tabela. Sem um índice, o tempo de processamento para a mesma operação é proporcional N lg N, Onde lg N é o logaritmo N para a base 2. Para tabelas grandes, a diferença é grande. Algumas operações não são práticos para realizar sem a ajuda de índices.

Suponha que você tenha uma tabela contendo 1.000.000 registros (N = 1.000.000), e processamento de cada registro ocupa um milissegundo (um milésimo de segundo). Se você tiver um índice, o processamento da tabela inteira leva apenas 1.000 segundos - menos de 17 minutos.

Sem um índice, você precisa ir através da tabela de aproximadamente 1.000.000 x 20 vezes para conseguir o mesmo resultado. Este processo levaria 20.000 segundos - horas mais de cinco anos e meio. A diferença entre 17 minutos e cinco horas e meia é substancial.

Como para manter um índice

Depois de criar um índice, você deve mantê-lo. Felizmente, o seu DBMS mantém seus índices para você automaticamente, atualizando-los cada vez que você atualizar as tabelas de dados correspondentes. Esse processo leva tempo extra, mas vale a pena. Quando você cria um índice e seu DBMS mantém-lo, o índice está sempre disponível para acelerar o seu processamento de dados, não importa quantas vezes você precisa chamar nele.

A melhor época para criar um índice é, ao mesmo tempo que você criar sua tabela de dados correspondente. Tente antecipar todas as maneiras que você pode querer aceder aos seus dados, em seguida, criar um índice para cada possibilidade.

Alguns produtos de DBMS dar-lhe a capacidade de desligar a manutenção do índice. Você pode querer fazê-lo em algumas aplicações em tempo real, onde actualização de índices tem uma grande quantidade de tempo e você tem muito pouco de sobra. Você pode até mesmo optar por atualizar os índices como uma operação separada durante o horário de pico. Como sempre, # 147 fazer o que funciona para você # 148- é a regra.

Não caia na armadilha de criar um índice para as ordens de recuperação que é improvável que você usar. manutenção do índice é uma operação extra que o computador deve executar cada vez que ela modifica o campo de índice ou adiciona ou exclui uma linha da tabela de dados - e esta operação afeta o desempenho. Criar apenas os índices que você espera utilizar as teclas como de recuperação - e apenas para tabelas que contêm um grande número de linhas.

Você pode precisar para compilar algo como um relatório mensal ou trimestral que exige os dados em uma ordem estranho que você normalmente não precisa. Criar um índice apenas antes de executar esse relatório periódico, executar o relatório, e em seguida, remover o índice de modo que o DBMS não é sobrecarregado com a manutenção do índice durante o longo período entre relatórios.

menu