Olá Fabrízio,

> Eu entendo... vc chega a monitorar se todos índices são realmente
utilizados
> pelo postgresql?

Não, não monitorei o uso a nível de índices. Meus testes preliminares e o
relato de vários usuários relatando a clara diferença do antes e depois me
bastaram. Estou certo de que nem todos os índices são usados, especialmente
em tabelas pequenas, mas o critério de criar até que atrapalhe rende muito
mais dividendos do que esperar o cliente berrar para criar. Até no caso mais
pessimista de 50 índices numa tabela, a perda pela manutenção desse monte
de índices se paga com folga pelo ganho de desempenho que o uso de pelo menos
um deles já proporciona.

Tem também o caso dos índices que simplesmente transcrevemos para todos os
clientes por causa das sugestões dos assistentes do SQL Server ou do Oracle,
que usam os índices de maneira infinitamente mais eficiente. Fazemos isso
para manter todos usando um modelo único e também porque há a expectativa
de que cedo ou tarde o otimizador aprenda a usar os índices decentemente
quando atualizarmos a versão do banco ou quando a distribuição dos dados
torne as estatísticas mais interessantes para o otimizador. Se não usar,
paciência, que o índice fique lá ocupando espaço até que alguém reclame
que ele está comprometendo o desempenho.

> A diferença pelo que percebi na sua abordagem em relação a minha é que
evito
> índices compostos... 

Nossa modelagem é cheia de tabelas com chaves naturais, cada qual com vários
filhos. Em casos que sabemos que o volume será grande, apelamos para chaves
artificiais, porém nem sempre o ganho com o uso de chaves compensa o esforço
*de programação e especificação* envolvidos. Outra questão é que em
alguns casos os campos da chave composta são úteis para exibição,
junções e pesquisas na própria tabela filha (quando me poupa de fazer JOIN
com a tabela pai), então nestes casos criar uma chave artificial poderia ser
até contraproducente.

Chaves compostas estragam o desempenho dos índices em qualquer caso, porém
são requisitos do negócio que não podemos ignorar. O que me resta é
aproveitar o que os índices proporcionam da melhor forma possível.


Atenciosamente,

Mozart Hasse


_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a