Hello Tomas, The auto explain analyze caught this: 2021-09-14 06:55:33 UTC, pid=12345 db=mydb, usr=myuser, client=ip, app=PostgreSQL JDBC Driver, line=55 LOG: duration: 5934.165 ms plan: Query Text: SELECT * FROM myschema.mytable pbh WHERE pbh.product_code = $1 AND pbh.cage_player_id = $2 AND pbh.cage_code = $3 AND balance_type = $4 AND pbh.modified_time < $5 ORDER BY pbh.modified_time DESC FETCH FIRST 1 ROWS ONLY Limit (cost=0.70..6.27 rows=1 width=66) (actual time=5934.154..5934.155 rows=1 loops=1) Buffers: shared hit=7623 read=18217 -> Index Scan Backward using mytable_idx2 on mytable pbh (cost=0.70..21639.94 rows=3885 width=66) (actual time=5934.153..5934.153 rows=1 loops=1) Index Cond: ((cage_code = $3) AND (cage_player_id = $2) AND (modified_time < $5)) So it expected to get 3885 rows, but got just 1. So this is the statistics issue, right? For testing, I set autovacuum_vacuum_scale_factor = 0.0 and autovacuum_vacuum_threshold = 10000 for the table and am now monitoring the behavior. Best regards, Kristjan On Mon, Sep 13, 2021 at 4:50 PM Tomas Vondra <tomas.vondra@xxxxxxxxxxxxxxxx> wrote: > > On 9/13/21 3:24 PM, Kristjan Mustkivi wrote: > > Dear community, > > > > I have a query that most of the time gets executed in a few > > milliseconds yet occasionally takes ~20+ seconds. The difference, as > > far as I am able to tell, comes whether it uses the table Primary Key > > (fast) or an additional index with smaller size. The table in question > > is INSERT ONLY - no updates or deletes done there. > > > > It'd be really useful to have explain analyze for the slow execution. > > My guess is there's a poor estimate, affecting some of the parameter > values, and it probably resolves itself after autoanalyze run. > > I see you mentioned SET STATISTICS, so you tried increasing the > statistics target for some of the columns? Have you tried lowering > autovacuum_analyze_scale_factor to make autoanalyze more frequent? > > It's also possible most values are independent, but some values have a > rather strong dependency, skewing the estimates. The MCV would help with > that, but those are in PG12 :-( > > > regards > > -- > Tomas Vondra > EnterpriseDB: http://www.enterprisedb.com > The Enterprise PostgreSQL Company -- Kristjan Mustkivi Email: kristjan.mustkivi@xxxxxxxxx