Page Free Space

SQL Server internals by Paul White

Wednesday, 2 August 2023

Importing a File in Batches

›
Importing a File in Batches There are a million ways to import data into SQL Server. Most of the time, we want to inges...
Tuesday, 30 August 2022

Reducing Contention on the NESTING_TRANSACTION_FULL latch

›
Reducing Contention on the NESTING_TRANSACTION_FULL latch Each additional worker thread in a parallel execution plan ex...
Saturday, 23 July 2022

More Consistent Execution Plan Timings in SQL Server 2022

›
More Consistent Execution Plan Timings in SQL Server 2022 The updated showplan schema shipped with SSMS 19 preview 2 c...
1 comment:
Thursday, 18 November 2021

Be Careful with LOBs and OPTION (RECOMPILE)

›
Be Careful with LOBs and OPTION (RECOMPILE) It sometimes makes sense to add OPTION (RECOMPILE) to a query. Typically ...
1 comment:
Saturday, 5 June 2021

Empty Parallel Zones

›
Empty Parallel Zones An empty parallel zone is an area of the plan bounded by exchanges (or the leaf level) containing...
Wednesday, 24 March 2021

Incorrect Results with Parallel Eager Spools and Batch Mode

›
Incorrect Results with Parallel Eager Spools and Batch Mode You might have noticed a warning at the top of the release ...
10 comments:
Sunday, 11 October 2020

sql_handle and the SQL Server batch text hash

›
sql_handle and the SQL Server batch text hash This article describes the structure of a sql_handle and shows how the...
5 comments:
Thursday, 8 October 2020

Closest Match with Sort Rewinds

›
Closest Match with Sort Rewinds In When Do SQL Server Sorts Rewind? I described how most sorts can only rewind when th...
Tuesday, 4 August 2020

SQL Server 2019 Aggregate Splitting

›
SQL Server 2019 Aggregate Splitting The SQL Server 2019 query optimizer has a new trick available to improve the perfor...
2 comments:
Sunday, 26 July 2020

A bug with Halloween Protection and the OUTPUT Clause

›
A bug with Halloween Protection and the OUTPUT Clause Background The OUTPUT clause can be used to return results fro...
5 comments:
Sunday, 5 July 2020

How MAXDOP Really Works

›
How MAXDOP Really Works A few days ago I ran a Twitter poll: The most popular answer gets highlighted by Twitter at ...
1 comment:
Sunday, 31 May 2020

Pulling Group By Above a Join

›
Pulling Group By Above a Join One of the transformations available to the SQL Server query optimizer is pulling a logic...
Saturday, 24 August 2019

Batch Mode Bitmap Demos

›
Batch Mode Bitmap Demos This is a companion post to my main article Batch Mode Bitmaps in SQL Server . This post provid...
Sunday, 9 June 2019

Apply versus Nested Loops Join

›
Apply versus Nested Loops Join SQL is a declarative language. We use SQL to write a logical query specification that d...
1 comment:
Tuesday, 2 May 2017

SQL Server Temporary Object Caching

›
SQL Server Temporary Object Caching Creating a table is a relatively resource-intensive and time-consuming operation. T...
Friday, 23 January 2015

Allocation Ordered Scans

›
Allocation Order Scans When an execution plan includes a scan of a b-tree index structure, the storage engine may be ab...
Tuesday, 15 April 2014

Cardinality Estimation for Disjunctive (OR) Predicates in SQL Server 2014 Onward

›
Cardinality Estimation for Disjunctive Predicates in SQL Server 2014 Introduction Back in January 2014, I wrote an art...
Saturday, 31 August 2013

Nested Loops Prefetching

›
Nested Loops Prefetching Nested loops join query plans can be a lot more interesting (and complicated) than is commonly...
Wednesday, 28 August 2013

Parameter Sniffing, Embedding, and the RECOMPILE Options

›
Parameter Sniffing, Embedding, and the RECOMPILE Options Parameter Sniffing Query parameterization promotes the reuse ...
Wednesday, 21 August 2013

Incorrect Results Caused By Adding an Index

›
Incorrect Results Caused By Adding an Index Say you have the following two tables, one partitioned and one not: CREATE...
Wednesday, 24 July 2013

Two Partitioning Peculiarities

›
Two Partitioning Peculiarities Table partitioning in SQL Server is essentially a way of making multiple physical tables...
Thursday, 18 July 2013

Aggregates and Partitioning

›
Aggregates and Partitioning The changes in the internal representation of partitioned tables between SQL Server 2005 an...
Monday, 8 July 2013

Working Around Missed Optimizations

›
Working Around Missed Optimizations In my last post , we saw how a query featuring a scalar aggregate could be transfor...
Wednesday, 26 June 2013

Optimization Phases and Missed Opportunities

›
Optimization Phases and Missed Opportunities There are two complementary skills that are very useful in query tuning. O...
Monday, 17 June 2013

Improving Partitioned Table Join Performance

›
Improving Partitioned Table Join Performance The query optimizer does not always choose an optimal strategy when joinin...
‹
›
Home
View web version

About Me

My photo
Paul White
View my complete profile
Powered by Blogger.