MySQL and MariaDB build internal temporary tables behind your back for GROUP BY, DISTINCT, UNION and derived tables. This post counts them with status counters, reads them in EXPLAIN, shows what pushes one to disk, and removes one with an index.
SQL SERVER – Finding Fragmentation in Forwarded Records
Finding Fragmentation in a heap also requires a separate check for forwarded records. I measure their effect before choosing maintenance.
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.
Table Usage in the Plan Cache: Count Queries That Touch a Table
Table usage in the plan cache shows how many times the cached queries of a database touched each table. This post builds a demo database, shows why a text search of the cache misleads, reads the table names from the plan XML, and lists the queries behind one table.







