Olá, pessoal, tudo bem?
Um banco de dados relacional utiliza os índices como meio de acelerar as consultas.
A intenção é simples… pegue um livro que você gosta – por exemplo, a Bíblia. Digamos que você não seja um cristão fervoroso que conheça várias passagens (eu mesmo conheço poucas). Em que livro, página e linhas fica a passagem das bodas de Caná, onde Jesus transformou água em vinho?
Como não sei de cabeça, fui no índice da Bíblia e procurei… evangelho de João 2, 1 – 11.
Caso não houvesse o índice, eu teria que percorrer todos os evangelhos, até encontrar minha passagem favorita da Bíblia.
O banco de dados também faz a mesma coisa, mas quem cria os índices do banco? O próprio banco? Nós, os desenvolvedores. Nós somos os criadores da informação, e é nosso dever facilitar as coisas.
Quando inserimos ou atualizamos um registro em uma tabela, o banco relacional avalia o novo registro e atualiza os índices daquela tabela. Se temos, portanto, um índice para um campo de data, o banco de dados é capaz de selecionar rapidamente os registros de vendas feitos no dia 13/02/2015 (sexta-feira TREZE!).
Não é muito bom sair criando índices para TODOS os campos da tabela, porque isso fará com que o tamanho da tabela cresça muito. Índice também ocupa espaço. Voltando à comparação com a Bíblia, imagine se metade da Bíblia fossem índices e o resto os livros sagrados? Seria prático?
Portanto, crie índices necessários às chaves estrangeiras e às suas buscas.
Voltemos ao exemplo das vendas…
Queremos criar uma tabela hipotética Vendas, que armazene o código próprio, o código do cliente, a data da venda e o valor. Nosso cliente quer um relatório em que seja possível ver o valor vendido por período, ou dia, e um detalhamento com as maiores vendas do dia.
Para atender o nosso cliente, criamos um índice (aqui chamei de W1, em homenagem ao nosso ERP na Móveis Simonetti), com os campos data e valor.
INDEX `w1` (`data` ASC, `valor` DESC))
Dessa forma, com um único índice, atendemos a duas ou mais buscas do sistema. Cliente feliz, sistema rápido e mais tempo para fazermos novos recursos pro sistema.
Mais informações sobre índices e seu uso no MySQL podem ser encontrados neste link.
Nos vemos logo!
Abração!