Você está na página 1de 9

BANCO DE DADOS II

Índices SQL (INDEX)

“Se você tem uma maçã e eu tenho outra; e nós trocamos as maçãs,
Profº: Joseph Donald então cada um terá sua maçã. Mas se você tem uma ideia e eu tenho
outra, e nós as trocamos; então cada um terá duas ideias.”
Contatos:
joseph.vieira@facape.br
George Bernard Shaw
Banco de Dados II
Profº: Joseph Donald
Índices SQL
• São usados para acelerar a recuperação de dados solicitados pelas
consultas
• Sem um índice a pesquisa ocorre na tabela inteira (Table Scan)
• Não se podem criar índices para colunas do tipo BLOB (imagens ou outros
arquivos binários) ou arrays
• O SGBD automaticamente cria índices, quando tabelas são definidas
usando restrições:
• Primary key
• Foreign Key
• Unique
Banco de Dados II
Profº: Joseph Donald
Índices SQL
• Sintaxe:

CREATE INDEX nomeíndice ON table (col)

ou seja,

CREATE INDEX nomex ON cliente (nome)


Banco de Dados II
Índices Profº: Joseph Donald
Especificação da ordem de classificação

• Por padrão a ordem é ascendente

• Para ordenar de forma descendente, usa-se DESCENDING

CREATE DESCENDING INDEX data_emissão_x ON pedido (data_emissao)


Banco de Dados II
Exclusão de Índices Profº: Joseph Donald

• Remove um índice

• Índices definidos pelo sistema (UNIQUE, PRIMARY KEY e FOREIGN KEY)


não podem ser eliminados.

• Um índice pode ser deletado apenas se não estiver em uso.

• DROP INDEX data_emissao_x ON pedidos


Banco de Dados II
Consultar os Índices existentes Profº: Joseph Donald

• Verifica todos os índices já existentes na tabela

SHOW INDEX FROM nome_tabela

Ou seja,

SHOW INDEX FROM cliente


Banco de Dados II
Índices Profº: Joseph Donald

Comando Explain

A instrução EXPLAIN é usada para obter um plano de execução de consultas (ou


seja, uma explicação de como o MySQL executaria uma consulta)

SINTAXE

EXPLAIN SELECT * FROM cliente


ou
EXPLAIN SELECT * FROM cliente
WHERE id_cliente = (select id_cliente FROM cliente WHERE lim_credito = 2000);
Banco de Dados II
Vamos praticar Profº: Joseph Donald

• Exiba os índices já existentes na tabela pedido:


SHOW INDEX FROM pedido

Utilize o comando EXPLAIN para verificar os dados de um Select simples


na tabela consulta.

EXPLAIN SELECT * FROM pedido

Agora usando ainda o EXPLAIN, restrinja o seu Select aos pedidos com
valor igual a 500
Banco de Dados II
Vamos praticar Profº: Joseph Donald

• Crie um índice para a coluna valor com o nome valor_x


CREATE INDEX valor_x ON pedido(valor)

Agora repita o Explain da mesma consulta e avalie o resultado.

EXPLAIN SELECT * FROM pedido WHERE pedido.VALOR = 500

Você também pode gostar