select relname, seq_scan, seq_tup_read from pg_stat_user_tables order by seq_scan desc
Hoje aprendi um recurso muito interessante no PostgreSQL, criação de índices com função. Com este recurso é possível fazer consultas utilizando índices mesmo quando você estiver utilizando funções.
Vamos para um exemplo simples:
clientes: nome, sobrenome, email, cidade, etc..
Utilizando os filtros da tua aplicação você normalmente utilizaria o filtro abaixo para procurar um cadastro.
SELECT * FROM clientes WHERE nome ilike 'Nei' AND sobrenome ilike 'Santos' ORDER BY nome desc LIMIT 20
Devido a utilização da função ILIKE, o postgres não irá utilizar os índices que temos na tabela nome e sobrenome.
Então como resolver essa consulta já que não sabemos como o cliente digitou o nome.
A solução é criar índices para campos com função:
O PostgreSQL possui um módulo chamado fuzzystrmatch que está no pacote contrib, este módulo possui diversas funções para trabalhar com consultas aproximadas, muito útil quando queremos fazer buscas em palavras com erro de digitação.
Segundo Euler na pgcon 2008 (), esse tipo de consula possui um custo computacional alto..