← All articles
indexesperformancedesign

Heaps, forwarded records, and hidden I/O

Update-heavy heaps create forwarded record chains that quietly multiply reads. What reviewers look for and when a clustered index is the real fix.

Not every table needs a clustered index on day one. Many update-heavy heaps, however, accumulate forwarded records that turn simple reads into pointer-chasing I/O.

What health reviews look for

  • Large heaps with heavy update patterns
  • Forwarded record counts that explain inflated logical reads
  • Staging tables that became permanent production tables
  • “Temporary” designs that aged into core OLTP

When heaps are fine

  • Insert-only patterns with truncate/reload
  • True staging with controlled lifecycle
  • Specific bulk patterns under conscious design

When they are not

  • Rows updated often and grow in size
  • Point lookups and range access without a good clustering key
  • Reporting scans that touch far more pages than rowcount suggests

Remediation is design work

Adding a clustered index is not a checkbox. Key choice, downtime, and foreign keys matter. A health check identifies the symptom; implementation needs a short design conversation so you do not trade one problem for another.

Need hands-on SQL Server help?

Allay Data Solutions offers maintenance, tuning, and assessments from Port Elizabeth, South Africa.

Get in touch