Craig Freedman's SQL Server Blog
A discussion of query processing, query execution, and query plans in SQL Server.
Parallel Nested Loops Join
SQL Server parallelizes a nested loops join by distributing the outer rows (i.e., the rows from the...
Author: Craig Freedman Date: 11/08/2006
Parallel Scan
In this post, I’m going to take a look at how SQL Server parallelizes scans. The scan operator is...
Author: Craig Freedman Date: 11/02/2006
The Parallelism Operator (aka Exchange)
As I noted in my Introduction to Parallel Query Execution post, the parallelism (or exchange)...
Author: Craig Freedman Date: 10/25/2006
Index Union
I was planning to continue writing about parallelism this week (and I will continue another time in...
Author: Craig Freedman Date: 10/18/2006
Introduction to Parallel Query Execution
SQL Server has the ability to execute queries using multiple CPUs simultaneously. We refer to this...
Author: Craig Freedman Date: 10/11/2006
Decorrelating Subqueries
In my previous post, we saw some examples where the optimizer is able to take a query with a...
Author: Craig Freedman Date: 10/04/2006
Scalar Subqueries
A scalar subquery is a subquery that returns a single row. Some scalar subqueries are obvious. For...
Author: Craig Freedman Date: 09/27/2006
Hash Aggregate
In my prior two posts, I wrote about the stream aggregate operator. Stream aggregate is great for...
Author: Craig Freedman Date: 09/20/2006
Stream Aggregate
There are two physical operators that SQL Server uses to compute general purpose aggregates where we...
Author: Craig Freedman Date: 09/13/2006
Aggregation
Aggregation refers to the collapse of a larger set of rows into a smaller set of rows. Typical...
Author: Craig Freedman Date: 09/06/2006
Subqueries: ANDs and ORs
In my “Introduction to Joins” post, I gave an example of how we can use a semi-join to evaluate an...
Author: Craig Freedman Date: 08/30/2006
Subqueries in CASE Expressions
In this post, I’m going to take a look at how SQL Server handles subqueries in CASE expressions....
Author: Craig Freedman Date: 08/23/2006
Summary of Join Properties
The following table summarizes the characteristics of the three physical join operators which I...
Author: Craig Freedman Date: 08/16/2006
Hash Join
When it comes to physical join operators, hash join does the heavy lifting. While nested loops join...
Author: Craig Freedman Date: 08/10/2006
Merge Join
In this post, I’ll describe the second physical join operator: merge join (MJ). Unlike the nested...
Author: Craig Freedman Date: 08/03/2006
Nested Loops Join
SQL Server supports three physical join operators: nested loops join, merge join, and hash join. In...
Author: Craig Freedman Date: 07/26/2006
Introduction to Joins
Joins are one of the most important operations performed by a relational database system. An RDBMS...
Author: Craig Freedman Date: 07/19/2006
Index Examples and Tradeoffs
The optimizer must choose an appropriate “access path” to read data from each table referenced in a...
Author: Craig Freedman Date: 07/13/2006
Seek Predicates
Before SQL Server can perform an index seek, it must determine whether the keys of the index are...
Author: Craig Freedman Date: 07/07/2006
Bookmark Lookup
In my last post, I explained how SQL Server can use an index to efficiently locate rows that qualify...
Author: Craig Freedman Date: 06/30/2006
Scans vs. Seeks
Scans and seeks are the iterators that SQL Server uses to read data from tables and indexes. These...
Author: Craig Freedman Date: 06/26/2006
Properties of Iterators
In this post, I’ll give an overview of three interesting properties of iterators that can affect...
Author: Craig Freedman Date: 06/19/2006
Viewing Query Plans
In my last post, I explained that SQL Server executes a query by compiling it into an iterator tree...
Author: Craig Freedman Date: 06/13/2006
The Building Blocks of Query Execution
What are iterators? SQL Server breaks queries down into a set of fundamental building blocks that we...
Author: Craig Freedman Date: 06/08/2006
Why am I starting this blog?
About two years ago I presented a talk to a couple of SQL Server user groups where I explained in...
Author: Craig Freedman Date: 06/07/2006