Utilizando índices em tabelas no PostgreSQL

1Comments

Muitas pessoas hoje em dia não utilizam um recurso básico presente em quase todos os SGBDs conhecidos popularmente: os índices.

Para que servem os índices?

Os índices são criados para direcionar o otimizador de consultas na hora de localizar os registros desejados, de acordo com o filtro informado no momento da consulta sql para evitar um seq scan e funcionam exatamente como um índice de um livro: diz em que página está cada conteúdo.

Clique aqui para saber mais sobre quando ocorre o seq scan.

Sendo assim, quando realizamos uma pesquisa pelo filtro login=’marcelo’, o banco saberá exatamente em que local do disco (hd) encontra-se o registro que atenda a esse critério.

Criando o índice

CREATE INDEX idx_usuario_login_senha ON usuario USING btree (login,senha);

No caso acima, criamos o índice idx_usuario_login_senha na tabela usuario para os campos login e senha. Então, a consulta será otimizada quando esses 2 campos forem utilizados em uma consulta. Exemplo:

SELECT * FROM usuario WHERE login = 'marcelo' AND senha = '123456';

Veja também como criar índices condicionais no PostgreSQL.

É importante saber que índices consomem muito espaço em disco e sua criação apesar de muito útil para a performance do banco de dados, podem se tornar inúteis se criados em excesso. Portanto é sempre bom conhecer bem a aplicação e saber quais filtros ela utiliza em suas consultas para evitar usar recursos excessivos.

Tags:, , , ,