About this time last year I was holding forth on the value of visiting
the heap in TID order, even when index scan tuples are randomly ordered.
Today I decided to start working on the problem stated in this TODO
item:
Fetch heap pages matching index entries in sequential order Rather than randomly accessing heap
pagesbased on index entries, mark heap pages needing access in a bitmap and do the lookups in sequential
order.Another method would be to sort heap ctids matching the index before accessing the heap rows.
I see that Tom has already done the infrastructure work by adding
getmulti, but getmulti isn't used by nodeIndexscan.c, only
nodeBitmapIndexscan.c. Will btree index scans be executed by creating
in-memory bitmaps in 8.1, or will some scans still be executed the usual
way? If the former, I'd be wasting time, but in the latter case it
would be worth it.
-jwb