The maximum columns in an index is 32 key columns, and a second limit on key size can stop an index earlier. This post builds a 40 column table, shows the error for a 33rd key column, and adds included columns to get around it. It also shows the 900 and 1,700 byte key limits and tests statistics on 33 and 40 columns.
SQL SERVER – Data and Index Compression – Real-World Conversation
Index Compression needs workload measurements of storage, I/O and CPU. A customer conversation prompted my earlier advice.
Index Build Speed: Which Rebuild Settings Change the Time
Index build speed depends on rebuild or reorganize, MAXDOP, ONLINE, SORT_IN_TEMPDB and the recovery model. This post times each choice on a million row table and measures the log under each recovery model. It shows which one changes the clock and which changes only the log.
Room for an Index Build: Free Space and TempDB Placement
Room for an index build is the free space that your database and tempdb need before the build starts. This post estimates the index, checks both places, breaks a build on purpose, and shows what SORT_IN_TEMPDB moves and what it leaves in your database.
Finding the Indexes Behind Lock Waits With Operational Stats
Rank indexes behind lock waits with operational stats, separate latches from locks, and test targeted access or row versioning fixes.
COMPRESSION_DELAY Option for Columnstore Indexes: Test It
The COMPRESSION_DELAY option keeps a closed delta rowgroup uncompressed for a number of minutes, so rows that change soon after they arrive are cheaper to modify. This post loads two demo tables, updates fresh rows in each, and shows the deleted rows that early compression leaves behind.
Fragmentation in Columnstore Indexes: Find and Fix It
Fragmentation in columnstore indexes means deleted rows that stay inside compressed row groups, and row groups that are too small. This post builds a demo table, measures the deleted rows with the row group view, and compares REORGANIZE with REBUILD.







