Oi Monica, Seguindo nas suas razoáveis premissas:
> A tabela history possui em média *87 milhões* de registros. > É uma tabela que sofre muito insert/update/delete. > Faço analyze e reindexação semanalmente. Tem como fazer com mais frequência, como por exemplo diariamente? Pelo volume de atualizações, pode fazer alguma diferença. > A tabela tem a seguinte estrutura e índice: > > CREATE TABLE history ( > itemid bigint NOT NULL DEFAULT (0)::bigint, > clock integer NOT NULL DEFAULT 0, > "value" numeric(16,4) NOT NULL DEFAULT 0.0000 > ) WITH (OIDS=TRUE); Tire esse maldito OIDS=TRUE, só ocupa espaço. Se alguém disser que usa esse treco, convença-o a não usar. Como teu gargalo é I/O e o teu registro é pequeno, isso pode fazer dar uma boa diferença. > CREATE INDEX history_1 ON.history > USING btree (itemid, clock); Creio que a consulta nem use esse índice, tente criar uma PK ou declare esse índice como UNIQUE (se estes campos o forem de fato). Não sei o PostgreSQL, mas um banco de dados inteligente se aproveitaria disso. Usar as tabelas de estatísticas não te dará uma estimativa exata ou vai mudar o ponto de lentidão, veja se é aplicável a seu caso. Esse índice é muito esquisito, você tem certeza que alguma aplicação faz uso dele?! COm um índice a menos, a atualização e o vacuum/analyze ficariam menos piores. Mozart _______________________________________________ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral