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.

Video: 24# SQL SERVER "INDICES" (APRENDE FÁCIL Y RÁPIDO)

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 tabela 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.

Video: CREAR INDICES EN SQL SERVER 2012

Nome do clienteEndereço 1Endereço 2CidadeEstado
Animal Clinic Butternut5 Butternut PistaHudsonNH
Âmbar Veterinária, Inc.470 Kolvir círculoÂmbarMI
Veterinários R Us2300 Geoffrey EstradaSuite 230AnaheimCA
cachorrinho Doctor32 Terry TerraceNutleyNJ
O Centro EquestreVeterinário7890 Paddock ParkwayGallupNM
Instituto Dolphin1002 Marine DriveKey WestFL
J. C. Campbell, Vet crédito2500 Main StreetLos AngelesCA
Wenger&rsquo-s Farm Worm15 Bait BoulevardSedonaAZ

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 em tudo. As linhas são simplesmente na ordem em que alguém introduziu os dados.

Nome do clientePonteiro para 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
Wenger&rsquo-s Farm Worm8

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 de 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ê tem 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.

Video: Creación de Indices en SQL Server 2008



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 N lg é o logaritmo de N para a base 2. Para tabelas grandes, a diferença é grande. Algumas operações não são práticos para executar sem a ajuda de índices.

Suponha que você tenha uma tabela contendo 1.000.000 de registros (N = 1.000.000), e o processamento de cada ficha tem 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 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 acessar seus dados, e, 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 atualização de índices tem uma grande quantidade de tempo e você tem muito pouco a perder. Você pode até optar por atualizar os índices como uma operação separada durante o horário de pico. Como de costume, “fazer o que funciona para você” é 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 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 para usar como chaves de recuperação - e apenas para tabelas que contêm um grande número de linhas.

Você pode precisar 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, solte o índice para o SGBD não é sobrecarregado com a manutenção do índice durante o longo período entre relatórios.


Publicações relacionadas