Improving the Top Based Pre-2012 Median Solution
Avoiding large memory grants and excessive scalar computations.
Avoiding large memory grants and excessive scalar computations.
Analyzing the cause of lower than expected performance and applying a correction.
The type and number of locks acquired and released during query execution can have a surprisingly large impact on performance, even if no waiting or blocking occurs.
A fast way to compute single and grouped medians using a dynamic T-SQL cursor.
SQL Server sort internals, including in-memory sorts and two new classes specific to In-Memory OLTP.
The first four of the seven SQL Server sorts described in detail.
The guarantees provided by the weakest of the standard transaction isolation levels. Includes examples of less well-known concurrency effects.
Details of a SQL Server bug that can render an indexed view incorrect.
How SQL Server maintains indexed views as the underlying data changes.
How SQL Server allocation ordered scans work in detail, when they can and can't be used, and how to disable them (almost) completely.
Thinking laterally to find a better algorithm rather than tuning individual SQL Server execution plan operators.
How merge concatenation can be used to avoid sorting, if you know enough about the SQL Server execution engine.
Though SQL is a declarative language, expressing queries differently can dramatically change execution plans.
Details of a regression in a deadlock fix.
A SQL Server semi join cardinality estimation bug where predicates pushed beyond a UNION ALL
are missed.
Index to my series on concurrency, the ACID properties of statements and transactions, and isolation levels in SQL Server.
Guarantees provided by the SQL Server snapshot isolation level and some of its surprising behaviours.
Adding a filtered index can have surprising side-effects on existing queries, even where it seems the new filtered index is completely unrelated.