artigo sql magazine 48 - Microsoft SQL SERVER 2005 – Trabalhando com Índices

Artigo da revista SQL Magazine edição 48.

Esse artigo faz parte da revista SQL Magazine edição 48. Clique aqui para ler todos os artigos desta edição

Clique aqui para ler esse artigo em PDF.

 

SQL Server

Microsoft SQL SERVER 2005 – Trabalhando com Índices

Dicas para definição e manutenção

 

Desde que começamos a trabalhar com bancos de dados, sempre nos vem a pergunta: como fazer para que as consultas X, Y ou Z rodem mais rapidamente?

A solução que temos é simples: criando índices nas tabelas consultadas.

Tem muita gente que acha que a criação de índices tem mais a ver com “arte” do que com ciência, mas esta questão é facilmente resolvida usando um pouco de bom senso. 

Como funcionam os índices

No SQL SERVER, os índices funcionam literalmente como o índice de um livro. Quando o SQL SERVER armazena um registro de uma tabela, ele está escrevendo este registro no que chamamos de página. Este nome não é uma mera coincidência como veremos a seguir.

As páginas são áreas físicas do disco rígido que são gerenciadas pelo servidor SQL. Cada tabela pode usar centenas ou milhares de páginas, dependendo do tamanho desta tabela.

Quando apagamos um registro da tabela, estamos fazendo algo parecido como passar uma borracha e apagar uma linha de uma página do livro. Assim, ao apagarmos o registro, estamos deixando um espaço em branco perdido no meio do livro.

Um índice da tabela trabalha de forma idêntica ao índice de um livro. Ele aponta em que página devemos procurar a palavra que buscamos. Com isto não precisamos pesquisar o livro inteiro (ou a tabela toda, no nosso caso). Basta pesquisarmos na página indicada.

Naturalmente, os índices também são escritos em páginas. E quando apagamos um registro de uma página, a indicação deste registro nas páginas de índice também é apagada.

Quando pesquisamos uma tabela, o SQL SERVER verifica se ela possui um índice e se este índice será útil para o tipo de pesquisa a ser realizada. No caso da resposta ser positiva, ele pesquisa as páginas de índice, localizando mais rapidamente os registros desejados. Se a resposta for negativa, o SQL SERVER é obrigado a varrer todas as páginas de registros, o que acaba requerendo muito mais tempo de processamento (chamamos isso de table scan).

Os índices do SQL SERVER usam a estrutura lógica conhecida como B-tree. Existem outros modelos de indexação, mas os índices B-tree têm um bom desempenho para a grande maioria das situações em que usamos o SQL SERVER.

Ilustrando a criação de índices

Para ajudar nos nossos exemplos, vamos usar a mesma tabela que foi usada no Desafio SQL apresentado nesta revista. Trata-se de uma tabela com informações de endereços de clientes.

Para fins do nosso exemplo, vamos imaginar que a tabela que criamos contém 10 milhões de registros.

Mostramos na Listagem 1 o script de criação desta tabela, que chamamos de tblEndereco.

 

Listagem 1. Criação da tabela de exemplo para indexação.

CREATE TABLE tblEndereco (

pkEndereco INT NOT NULL,

Endereco VARCHAR(200) NOT NULL,

CEP INT NOT NULL,

Cidade  VARCHAR(100),

Estado VARCHAR(2)

);

" [...] continue lendo...

Artigos relacionados