Eu posso ver nos logs do PostgreSQL que certas consultas simples (sem junta e usando apenas corresponder a condições que usam índices) levar de 1 a 3 segundos para executar. Eu consultas que levam mais de um segundo para executar, portanto, há consultas semelhantes que executam menos de um segundo, que não são reportados log.
Quando tento a mesma consulta usando EXPLAIN ANALYZE, que leva alguns milissegundos.
A tabela contém cerca de 8 milhões de discos e é escrito para e consultado extensivamente. Tenho habilitado vácuo auto e até recentemente (há poucas horas) correu um VACUUM ANALYZE nessa tabela.
Amostra entrada de log consulta: Dec 30 10:14:57 postgres DB01 [7400]: [20-1] LOG: Duração: 3857,322 declaração ms: SELECT * FROM respostas Onde ( respostas .contest_id = 17469) e (user_id não é dezembro 30 10:14:57 postgres DB01 [7400]: [20-2] nulo) POR ORDEM updated_on desc LIMITE 5
contest_id e user_id é indexado. updated_on não é indexado. Se eu indexá-lo, o planejador de consultas ignora a ans índice contest_id usa updated_on vez que ainda retarda a consulta. As entradas máximas na consulta acima, sem o limite não seria mais do que 1000.
Qualquer ajuda seria muito apreciada.













