During CREATE INDEX we include all tuples, even if they are already dead when we build an index.
What purpose does this serve? A pre-existing transaction can't see the index, so there is no danger that it can use the index and unknowingly avoid touching a valid row. (If it *can* see the index, is there some benefit in that behaviour?) I suggest that we should not include dead rows in an index when it is created, to increase the speed of index creation in certain cases. This also simplifies a number of the index build routines, which actually contain special logic for handling dead rows. Comments? Best Regards, Simon Riggs ---------------------------(end of broadcast)--------------------------- TIP 9: In versions below 8.0, the planner will ignore your desire to choose an index scan if your joining column's datatypes do not match