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.
Conteúdo
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 cliente | Endereço 1 | Endereço 2 | Cidade | Estado |
---|---|---|---|---|
Animal Clinic Butternut | 5 Butternut Pista | Hudson | NH | |
Âmbar Veterinária, Inc. | 470 Kolvir círculo | Âmbar | MI | |
Veterinários R Us | 2300 Geoffrey Estrada | Suite 230 | Anaheim | CA |
cachorrinho Doctor | 32 Terry Terrace | Nutley | NJ | |
O Centro Equestre | Veterinário | 7890 Paddock Parkway | Gallup | NM |
Instituto Dolphin | 1002 Marine Drive | Key West | FL | |
J. C. Campbell, Vet crédito | 2500 Main Street | Los Angeles | CA | |
Wenger&rsquo-s Farm Worm | 15 Bait Boulevard | Sedona | AZ |
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 cliente | Ponteiro para tabela de dados |
---|---|
Âmbar Veterinária, Inc. | 2 |
Animal Clinic Butternut | 1 |
cachorrinho Doctor | 4 |
Instituto Dolphin | 6 |
J. C. Campbell, Vet crédito | 7 |
O Centro Equestre | 5 |
Veterinários R Us | 3 |
Wenger&rsquo-s Farm Worm | 8 |
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.