Hi,

> You may want to try auto_explain to try and catch the explain for one of
> these queries.

I enabled auto_explain and it was very informative.

LOG:  duration: 2202.924 ms  execute <unnamed>: SELECT * FROM "members" WHERE 
"hid" = $1
LOG:  duration: 2202.918 ms  plan:
        Query Text: SELECT * FROM "members" WHERE "hid" = $1
        Query Parameters: $1 = '<redacted>'
        Gather  (cost=1000.00..907603.54 rows=67083 width=832) (actual 
time=1222.570..2202.893 rows=1.00 loops=1)
          Workers Planned: 2
          Workers Launched: 2
          Buffers: shared hit=816042
          ->  Parallel Seq Scan on members  (cost=0.00..899895.24 rows=27951 
width=832) (actual time=1719.931..1972.703 rows=0.33 loops=3)
                Filter: ((hid)::text = '<redacted>'::text)
                Rows Removed by Filter: 4463227
                Buffers: shared hit=816042

It's not using the indexes at all.

Since the query is clearly the same as I attempted earlier, why would it not be 
using the index?

This table gets reasonably frequent inserts, but the insert timestamps don't 
really match up with the slow queries (for instance, there can be a 30-second 
gap where no rows are inserted, but there is still a slow query every few 
seconds). The table gets infrequent deletes.

Most if not all activity on this table is only updating single rows, or 
deleting based on the "system" foreign key column.
There is a job that calculates the count of rows (select count(*) from 
members), but it only runs once a minute and takes 1-2 seconds.

Kindly,
Lillian


Reply via email to