EXPLAIN - Bitmap Heap Scan


A bitmap heap scan takes a row location bitmap generated by a Bitmap Index Scan (either directly, or through a series of bitmap set operations via BitmapAnd and BitmapOr nodes) and looks up the relevant data. Each chunk of a bitmap can either be exact (pointing directly to rows) or lossy (pointing to a page containing at least one row matching the predicate).

Postgres prefers using exact blocks, but if limited work_mem is an issue, it will start using lossy blocks as well. The blocks are actually produced as lossy or exact by children of the bitmap heap scan, but that status is more relevant when the blocks are processed to fetch rows, so it is reflected in the Bitmap Heap Scan. If a bitmap block is lossy, the node will need to fetch the entire page, and re-check the specified index condition (since it doesn’t know which rows on the page are needed).

Important Fields:

  • Exact Heap Blocks
  • Filter
  • Lossy Heap Blocks
  • Recheck Cond
  • Rows Removed by Filter
  • Rows Removed by Index Recheck

Couldn't find what you were looking for or want to talk about something specific?
Start a conversation with us →