Inchaço de índice
Um índice que ocupa três vezes o espaço que deveria, porque entradas removidas deixaram páginas pouco preenchidas que nunca voltam a ser compactadas.
A causa está no MVCC: um update cria uma nova versão da linha e, portanto, uma nova entrada no índice, enquanto a antiga permanece até o vacuum limpá-la. O espaço só é reaproveitado se os novos valores por acaso pertencerem àquela página específica, o que, para chaves crescentes como timestamps, quase nunca acontece. O resultado é uma B-tree de páginas meio vazias: mais páginas para ler, pior aproveitamento do cache, buscas mais lentas. Meça com a extensão pgstattuple ou com as conhecidas queries de estimativa. O remédio é REINDEX CONCURRENTLY, disponível a partir do PostgreSQL 12, que reconstrói o índice sem bloquear escritas, ou o pg_repack em versões mais antigas.