Quick Tips: Introdução ao SQL - Parte VI

Nesta dica iremos continuar vendo a definição das tabelas agora na parte de Índices.

Criação de Índice

O Índice serve para prover um acesso rápido a linhas das tabelas. Por meio dele é possível unir uma ou mais colunas por onde o acesso é mais freqüente. Por exemplo: quando temos uma tabela de pessoas, normalmente queremos fazer buscas em ordem alfabética. Como o nome não é chave primária para a tabela (por ser alfanumérica o que deixa as pesquisas mais lentas – e pela possível repetição de nomes), então criamos um índice para o nome da pessoa.

Assim mesmo que o índice não seja a chave primária, garante-se um acesso mais rápido aos nomes, uma vez que, os dados buscados estariam fora de seqüência. Os valores indexados são armazenados em um objeto do banco de dados em ordem, o que permite ao gerenciador do banco de dados pesquisa primeiro no índice, para depois buscar na tabela.

O funcionamento de um índice é muito simples. É como um índice de um livro; os principais assuntos estão indexados em ordem alfabética. Você localiza ali o assunto, verifica o número da página em que ele é tratado e vai diretamente a essa página, sem precisar buscá-lo seqüencialmente nas páginas. Isso também acontece com o índice de uma tabela.

Quando criar um índice

A criação de índices na tabela apresenta uma enorme vantagem quando bem dirigida, mas pode trazer enormes problemas se for aplicada sem critério. Todo trabalho em um banco de dados tem um custo! Não adianta sair criando índices para cada um dos campos da tabela, mesmo que haja pesquisas eventuais em cada um dos campos.

Algumas dicas para ajudá-lo a decidir:

Naturalmente, sempre que uma consulta ao banco de dados estiver muito lenta, verifique a possibilidade de criar um índice para facilitar a busca.

CREATE INDEX

Para criarmos um índice, utilize o comando:

CREATE [UNIQUE] INDEX nome ON tabela (coluna [,coluna, ...] [ASC | DESC] )

Onde:

Identificador Descrição
UNIQUE Identifica que esse índice não permite repetição de conteúdo na chave (lista de colunas). Se o índice não for especificado, admitirá a repetição.
Nome Nome do objeto que será criado.
Tabela Nome da tabela que contém a(s) coluna(s).
Coluna Lista de colunas que compõe a chave de indexação.
ASC ASC Determina que ordem de indexação é ascendente (opção padrão, caso não seja definido DESC).
DESC DESC Determina que ordem de indexação é descendente.

Exemplos:

CREATE INDEX xAutor ON Autor (NMAUTOR ) CREATE INDEX xPedido ON Pedido ( CDPEDIDO DESC) CREATEINDEX xCidade ON Cidade (SGESTADO, CDCIDADE) CREATE UNIQUE INDEX xCliente ON Cliente (CDCLIENTE ASC )

DROP INDEX

Para excluir um índice, utilize o comando:

DROP INDEX nome

Exemplo:

DROP INDEX xAutor

Leia todos artigos da série

Artigos relacionados