Bart Duncan's SQL Weblog
Filtered Indexes and Forced Parameterization: Can't we all just get along?
We have a database here that stores information about Azure SQLDB health issues; it was chugging...
Date: 02/08/2018
Row Goals Gone Rogue
This post discusses “row goals“, but with a twist. The point is to illustrate how row goals can...
Date: 03/14/2012
Don’t depend on expression short circuiting in T-SQL (not even with CASE)
There are a fair number of blog posts and forum discussions regarding expression short circuiting in...
Date: 03/03/2011
Living with SQL's 900 Byte Index Key Length Limit
We recently had a situation where we needed to interface with an external non-relational data source...
Date: 01/06/2011
Query Hash Statistics, a query cost analysis tool, now available for download
Some time ago I described the query fingerprint and query plan fingerprint (a.k.a. query hash /...
Date: 11/03/2010
T-SQL UDTs. (Huh!) What are they good for?
(The title of this post might seem a little inflammatory, but it’s not just a troll -- I...
Date: 08/25/2010
SQL Server Sizing Resources
Recently, I was asked whether Microsoft had any SQL Server hardware sizing tools. The asker referred...
Date: 06/16/2010
Purging Data
This post is about deleting a lot of rows, as you might do in a data archiving or purging task. By...
Date: 06/01/2010
Finding procedure cache bloat
Explicitly parameterizing queries is a well-known best-practice for database app developers. There...
Date: 05/26/2010
Sometimes the Simplest Solution Isn't the Best Solution (The Optional Parameter Problem)
Programmers should naturally gravitate toward the simplest, most elegant solution. This is because...
Date: 05/03/2009
Today's Annoyingly-Unwieldy Term: "Intra-Query Parallel Thread Deadlocks"
I've received a couple of questions in email and in comments about deadlocks involving...
Date: 09/24/2008
Defining Complex Server "Health" Policies in SQL 2008
Policy Based Management (PBM) is a new feature in SQL Server 2008 that allows you to define a set of...
Date: 09/11/2008
Query Fingerprints and Plan Fingerprints (The Best SQL 2008 Feature That You've Never Heard Of)
In versions of SQL Server before SQL Server 2008, it can be difficult to determine the cumulative...
Date: 09/03/2008
A simpler way to convert a hexadecimal string to varbinary
This isn't perf-related like most of my earlier posts, but I thought it was useful enough that I...
Date: 07/25/2007
Are you using SQL's Missing Index DMVs?
Did you know that your SQL Server is keeping track of the indexes that it thinks you should create?...
Date: 07/19/2007
Deadlock Troubleshooting, Part 3
Here’s an example of the classic scenario that is usually used to introduce the concept of a...
Date: 09/25/2006
Deadlock Troubleshooting, Part 2
In this post I’ll look at an actual deadlock, then troubleshoot it using the steps I described in...
Date: 09/12/2006
Joins Dissected on CraigFr's blog
CraigFr has a great series of posts in his blog describing the difference between the various...
Date: 08/16/2006
SELECT from a view slower than "equivalent" SELECT from the base table
Sometime we get complaints that a query is slower than it could be because a filter isn’t pushed...
Date: 08/14/2006
Wide vs. Narrow Plans
Here's another case where you might see intermittently poor performance that is "by design". Suppose...
Date: 07/27/2006
Limited Statistics Granularity
To set up this scenario, run the script below: USE tempdbGOIF OBJECT_ID ('test1') IS NOT NULL DROP...
Date: 07/25/2006
Why a bad plan isn't necessarily a bug
Everyone that has worked with databases for long enough has run into situations where the query...
Date: 07/25/2006