On Thu, 7 Sept 2023 at 19:17, Peter Geoghegan <pg@xxxxxxx> wrote: > It seems likely that the problem here is that some of the predicates > appear as so-called "Filter:" conditions, as opposed to true index > quals. hmm, if that were true we'd see "Rows Removed by Filter" in the explain analyze. I think all that's going on is that each tuple is on a different page and the heap accesses are just causing many buffers to be accessed. It seems to me that an IOS would likely fix that problem which is why I suggested count(*) instead of count(<not_null_column_thats_the_only_col_used_thats_not_in_the_index>) David