Re: [BUGS] BUG #11500: PRIMARY KEY index not being used
Marko Tiikkaja <marko@joh.to>
From: Marko Tiikkaja <marko@joh.to>
To: Tom Lane <tgl@sss.pgh.pa.us>
Cc: pgsql-bugs@postgresql.org
Date: 2025-10-04T02:39:55Z
Lists: pgsql-bugs
On Fri, Oct 3, 2025 at 16:31 Tom Lane <tgl@sss.pgh.pa.us> wrote: > Marko Tiikkaja <marko@joh.to> writes: > > ... we have a frequent query like this: > > > SELECT .. > > FROM orders > > WHERE > > order_id = $1 AND > > state = 'WAIT_EVENT'; > > > which almost always uses the primary key. But sometimes, perhaps > > after an autovacuum or something, something changes and postgres > > decides to start serving that query through the orders_wait_event_idx > > index. > > You haven't given us a lot to go on: no reproducible test case, I've provided two. Both make the planner look bad. no clear description of what triggers the issue, .. not even the complete > EXPLAIN output for the problem query. But it's hard to believe that > the planner would estimate a probe on a unique index as costing more > than 94812.85 units, which is what this fragment seems to suggest. That was an after-the-fact demonstration of how expensive gambling on the index can be. > If you look at eqsel() you will observe that the presence of a > unique index overrides any information from statistics, so there > is no "casino" behavior here IMO: it should realize that > "order_id = $1" selects a single row no matter what Then explain what's going on in the test case. I'll be at the slot machine with the planner. .m