Cookbook recipe

Heap vs index: what is stored where

Applies to PostgreSQL 13–17 Last reviewed May 2026 Grounded in source
Estimated investigation4 min

Scenario

People say "the heap" and "the index" as if they are different things — because they are. Knowing the split clarifies how lookups work. Diagnose it Compare heap and index sizes: SELECT pg_size_pretty(pg_relation_size('orders')) AS heap, pg_size_pretty(pg_indexes_size('orders'))…

Investigation Path

People say “the heap” and “the index” as if they are different things — because they are. Knowing the split clarifies how lookups work.

Diagnose it

Compare heap and index sizes:

SELECT pg_size_pretty(pg_relation_size('orders')) AS heap,
       pg_size_pretty(pg_indexes_size('orders')) AS indexes;

Why it happens

The heap holds the actual row data, unordered. An index holds sorted keys plus pointers (TIDs) to heap rows. A typical index scan finds the key in the index, then fetches the row from the heap.

This is a Pro lesson

Get every Learning Pathway and cookbook recipe — grounded in PostgreSQL source code, with diagnostics, fixes, and prevention for each topic.

Continue this lesson to learn:

  • How to fix it
  • Prevent it next time
  • Related & next steps
  • All 36 Learning Pathway lessons
  • 170+ cookbook recipes
  • Source-grounded diagnostics & fixes

Secure checkout Cancel anytime Source-grounded

Career Impact

This scenario builds production judgment and operational confidence under pressure.

Open Career Dashboard →

Keep going

Related & next steps

Was this helpful?

← All cookbook recipes