> Isn't the 23040 just the totalpages * 10 per `return totalpages * 10;` > in bringetbitmap()?
Yes, it is just confusing. The correct value is on one level up of the tree. It is 204 + 4404 rows removed by index recheck = 4608, so the estimate is not only 150x but 733x off :(. The sequential scan plan shows 204 + 1125498 rows removed by filter = 1125702 as the actual table size. However the former plan estimates to get 3377106 rows from the index. That is 3x of the table size. The selectivity estimation cannot be greater than 1. If I am not missing anything, the general statistics of this table should be seriously outdated.