SQLskills SQL101: Temporary table misuse

As Kimberly blogged about recently, SQLskills is embarking on a new initiative to blog about basic topics, which we’re calling SQL101. We’ll all be blogging about things that we often see done incorrectly, technologies used the wrong way, or where there are many misunderstandings that lead to serious problems. If you want to find all of our SQLskills SQL101 […]

Who is overriding MAXDOP 1 on the instance?

In Monday’s newsletter I discussed an email question I’d been sent and promised to blog about it. The question was “how can latch waits for ACCESS_METHODS_DATASET_PARENT occur when the instance MAXDOP is set to 1?” This shouldn’t happen, as that latch is only used for coordination between threads performing a parallel table/index scan. However, just […]

New course: Introduction to Query Store

Our first new course of the year, and our 50th online training course with Pluralsight!! Erin’s latest Pluralsight course has been published – SQL Server: Introduction to Query Store – and is just over three hours long. It’s based on her very popular user group and conference session, but much expanded with lots of cool demos. The modules are: Introduction […]

Survey results: Common causes of performance problems

A couple of week ago I kicked off a survey about common causes of performance problems – see here for the survey. Firstly I asked what was the root cause for the most recent performance problems you looked at – here are the results:   Secondly I asked what you think the overall most common […]

Query plan analysis first steps

About a month ago I kicked off a survey asking what you look for when first analyzing a plan for a poorly performing query. You can see the original survey here. Here are the survey results:   The "Other" values are as follows: 13 x "Most expensive as percentage of total cost of batch" 7 […]

Survey: what’s your plan for a plan?

In my survey for this week I'm interested in what you look for first when analyzing a query plan. I'll report on the results around mid-February. Thanks! PS Post comments are disabled to avoid skewing the results.

Two great blog series on joins and query plan operators

I was doing some research this morning for some query tuning on a client system and I came across a couple of blog series with some excellent posts for those looking to learn more about query plans (and as a handy reference). The first series is by Craig Freedman on the Query Processor team at […]

Adventures in query tuning: non-seekable WHERE clause expressions

I've been doing a lot of performance tuning work over the last couple of months and this weekend found something that's very pervasive out in the wild. Kimberly was helping me optimize a gnarly query plan and spotted something in the code I hadn't noticed that was causing an index scan instead of an index […]

Adventures in query tuning: unexpected key lookups

I'm starting a new blog category to talk about some of weird and confusing stuff I see while query tuning. First up is the case of the unexpected Key Lookup (Clustered) in a query that looks like it should be covered. This is a follow on from the post Missing index DMVs bug that could […]

Missing index DMVs bug that could cost your sanity…

Here's yet another reason to be very careful when using the missing index DMVs… There's a bug in the missing index DMVs that could end up causing you to knock your head against a brick wall and question your sanity. I know I did. The bug is this: the missing index code may recommend a nonclustered […]