Count rows. Model pages.
See what an index could cost.
A page-based estimate for one uncompressed, in-row nonclustered index.
Index profile
01 / INPUTSPage & storage estimate
02 / RESULTSEstimated B-tree page storage
B-tree levels
| Level | Role | Pages |
|---|
Planning summary
Read-only existing index storage
SELECT OBJECT_SCHEMA_NAME(p.object_id) AS schema_name,
OBJECT_NAME(p.object_id) AS table_name,
i.name AS index_name,
SUM(p.row_count) AS row_count,
SUM(p.used_page_count) * 8.0 / 1024 AS used_mib,
SUM(p.reserved_page_count) * 8.0 / 1024 AS reserved_mib
FROM sys.dm_db_partition_stats AS p
JOIN sys.indexes AS i
ON i.object_id = p.object_id AND i.index_id = p.index_id
WHERE i.type = 2
GROUP BY p.object_id, i.name
ORDER BY reserved_mib DESC;Run in the intended database with appropriate DMV permissions. Includes all partitions and allocation units; actual totals may exceed this simplified in-row model.
Width matters
at every level.
Use measured average record widths when available, or build a representative test index before committing production storage.
Page arithmetic
Each page occupies 8,192 bytes; 8,096 bytes are available after the page header. A record adds a 2-byte slot entry. Full record capacity is rounded down. Fill-factor reserve is rounded down separately and subtracted from full capacity. Leaf pages are rounded up from row count ÷ effective leaf capacity.
Each upper-level page references child pages. The planner repeatedly divides the previous level’s pages by upper-level capacity, rounding up, until one root page remains. A one-page index uses its leaf as the root. Storage is the sum of modeled pages × 8,192 bytes.
Preparing record-width inputs
Complete leaf width includes key and included column values, locator bytes and record metadata. Account for the heap RID or clustered key without double-counting key columns already present; nonunique clustered keys can add uniqueifier overhead. Upper records differ by index uniqueness and locator requirements. These details must be included in the width you enter.
Limitations
Compression, LOB and row-overflow pages, partition boundaries, allocation-map overhead, fragmentation, versioning overhead and rebuild working space are not modeled. Average widths can miss row-length variation. Headroom is a budgeting assumption, not a prediction of index rebuild space or transaction log demand. Fill factor applies when an index is built or rebuilt; it is not maintained as a permanent free-space percentage.
Guidance checked October 5, 2026. Not a clustered, columnstore, memory-optimized or compressed index estimator.