Nested Loops Joins and Performance Spools

Performance spools and how they can be used by the optimizer to reduce the estimated cost of nested loops joins.
Performance spools and how they can be used by the optimizer to reduce the estimated cost of nested loops joins.
The internals of SQL Server batch mode data normalization and how it can affect execution plans and performance.
Demo scripts for SQL Server batch mode hash bitmap selectivity estimates. Simple and complex bitmap types. Compiled and compressed bitmaps.
A deep dive into SQL Server batch mode bitmaps revealing undocumented details that can greatly impact performance.
Two cases where the introduction of the internal ANY
aggregate by the optimizer may cause wrong results.
Understanding the differences between SQL Server APPLY
and nested loops joins, including details of query optimizer transformations.
Minimal logging for inserts into b-tree indexes (empty or not) using the Fast Load Context, and why it might not always work as expected.
The factors SQL Server considers when enabling minimal logging for inserts into an empty clustered table.
The factors SQL Server considers when enabling minimal logging for inserts into a table without a clustered index.
A deep dive into columnstore grouped aggregation pushdown, showing where this optimization is unsuccessful or not attempted, using the undocumented SQL Server command DBCC CSINDEX
.
Why the IGNORE_DUP_KEY
index option is much slower on a clustered index than a nonclustered unique index. Detail execution plan analysis and internal engine details.
How the new SQL Server cardinality estimator uses histogram coarse alignment.
A redundant and problematic TOP (1)
added to the inner side of an apply anti join.
An anti join does not automatically come with a 'row goal'. This article describes anti joins and the conditions required for the optimizer to add a row goal.
When the SQL Server query optimizer adds a row goal for a semi join. How you can spot the effects in showplan and trace flag output.
Information about SQL Server row goals and why they're important when trying to understand why the query optimizer made a particular choice.
Using character substrings (trigrams) to speed up wildcard searches in SQL Server. Provides an fairly complete example implementation.
Using a debugger to explore how SQL Server derives estimates when combining multiple single-column statistics.