Page Free Space

SQL Server internals by Paul White

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...
Tuesday, 11 June 2013

Hello Operator, My Switch Is Bored

›
Hello Operator, My Switch Is Bored This post is in two parts. The first part looks at the Switch execution plan operato...
Thursday, 4 April 2013

Optimizer Limitations with Filtered Indexes

›
Optimizer Limitations with Filtered Indexes One of the filtered index use cases mentioned in the product documentation ...
Wednesday, 20 March 2013

The Problem with Window Functions and Views

›
The Problem with Window Functions and Views Introduction Since their introduction in SQL Server 2005, window functions...
1 comment:
Friday, 8 March 2013

Execution Plan Analysis: The Mystery Work Table

›
Execution Plan Analysis: The Mystery Work Table I love SQL Server execution plans. It is often easy to spot the cause o...
1 comment:
Thursday, 21 February 2013

Halloween Protection – The Complete Series

›
Halloween Protection – The Complete Series I have written a four-part series on the Halloween Problem . Some of you wi...
Wednesday, 20 February 2013

The Halloween Problem – Part 4

›
The Halloween Problem – Part 4 The Halloween Problem can have a number of important effects on execution plans. In this...
Monday, 18 February 2013

The Halloween Problem – Part 3

›
The Halloween Problem – Part 3 The MERGE statement (introduced in SQL Server 2008) allows us to perform a mixture of ...
Friday, 15 February 2013

The Halloween Problem – Part 2

›
The Halloween Problem – Part 2 In the first part of this series , we saw how the Halloween Problem applies to UPDATE q...
Wednesday, 13 February 2013

The Halloween Problem – Part 1

›
The Halloween Problem – Part 1 Much has been written over the years about understanding and optimizing SELECT queries,...
Wednesday, 6 February 2013

Incorrect Results with Indexed Views

›
Incorrect Results with Indexed Views If you use MERGE , indexed views and foreign keys, your queries might return incor...
Friday, 1 February 2013

A creative use of IGNORE_DUP_KEY

›
A creative use of IGNORE_DUP_KEY Let’s say you have a big table with a clustered primary key, and an application that i...
Saturday, 26 January 2013

Optimizing T-SQL queries that change data

›
Optimizing T-SQL queries that change data Most tuning efforts for data-changing operations concentrate on the SELECT s...
Monday, 10 December 2012

MERGE Bug with Filtered Indexes

›
MERGE Bug with Filtered Indexes A MERGE statement can fail, and incorrectly report a unique key violation when: The ...
Monday, 15 October 2012

Cardinality Estimation Bug with Lookups

›
Cardinality Estimation Bug with Lookups Estimated row counts on Key or RID Lookups where a filtering predicate is app...
‹
›
Home
View web version

About Me

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