Banco de Dados

27 fev, 2015

Como um banco relacional utiliza índices

Publicidade

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!