Olá pessoal nesta Quick iremos continuar com falando sobre SQL, 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:

1. Chaves primárias: se o seu banco de dados não criá-las automaticamente, crie.

2. Chaves estrangeiras, crie.

3. Colunas utilizadas freqüentemente na cláusula WHERE do comando SELECT, crie.

4. Colunas com muito conteúdo nulo, não crie.

5. Colunas com muitos valores iguais, não crie.

6. Tabelas muitos pequenas, não crie.

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

Vou ficando por aqui, veja na próxima Quick veremos como incluir alterar e excluir dados da tabela

Um abraço

Rubens Antunes

Leia todos artigos da série