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