On Sun, Aug 18, 2024 at 10:50 PM Tom Lane <tgl@xxxxxxxxxxxxx> wrote: > I think it's a good bet that this query would be *slower* if > it were done the other way. The filter condition is eliminating > only one of the 11 rows matching "a = 662028765". If we did what > you think you want, we'd initiate ten separate index descents > to find the other ten rows. True - on versions prior to Postgres 17. On 17 the number of index descents will be minimal. If there are less than a few hundred index tuples with the value a = <whatever>, then there'll only be one descent. > Yeah, that part is a weakness I've wanted to fix for a long > time: it could do the filter condition by fetching b from the > index, but it doesn't notice that and has to go to the heap > to get b. It was fixed? At least on 17. -- Peter Geoghegan