I have completely solved (from 17s to 1s) by running this command:
vacuum analyze subscriptions;

Now I run the autovacuum more frequently using these settings in
postgresql.conf:
autovacuum_vacuum_scale_factor = 0.01
autovacuum_analyze_scale_factor = 0.01

Thanks to everyone - and in particular to Justin Pryzby for pointing me in
the right direction.

On Thu, Aug 22, 2019 at 7:37 PM Michael Lewis <mle...@entrata.com> wrote:

> You can SELECT reltuples FROM pg_class WHERE oid='subscriptions'::oid, but
>> its
>> accuracy depends on frequency of vacuum (and if a large delete/insert
>> happened
>> since the most recent vacuum/analyze).
>>
>
> This only seems helpful to find approx. count for the entire table,
> without considering the WHERE condition.
>
> Marco,
> As Justin pointed out, you have most of your time in the bitmap heap scan.
> Are you running SSDs? I wonder about tuning effective_io_concurrency to
> make more use of them.
>
> "Currently, this setting only affects bitmap heap scans."
>
> https://www.postgresql.org/docs/current/runtime-config-resource.html#RUNTIME-CONFIG-RESOURCE-ASYNC-BEHAVIOR
>
> Also, how many million rows is this table in total? Have you considered
> partitioning?
>

Reply via email to