I talk about the pros and cons of letting SQL Server wait to get a more accurate cardinality estimate from a table variable.
SQL Server
I discuss a queue table for DDL notifications instead of handling them within a DDL trigger.
This tip was refreshed with status updates for some of the critical bugs discovered in MERGE over the years.
SQL Server will gladly tell you about missing indexes, but it may not give you the keys in the right order.
GDPR is a big deal for a lot of us; in this tip I explain how you might want to deal with "forget me" requests.
I show how to denormalize data using FOR XML PATH and STRING_AGG, and explain which one is faster.
Privacy laws are going to make us all much more careful about how we handle data archival and purge processes.
I show how to enable, disable, drop, and re-create all triggers in a database using dynamic SQL.
Estimated data size as a result of implicit conversions can make a huge difference in the execution plan.
In this tip, I talk about a slightly more flexible way to simulate TRY_CONVERT() on unsupported versions of SQL Server.
If you are still stuck on an unsupported version of SQL Server, there may still be a way for you to have TRY_CONVERT() functionality.
Check this list for possible problems if you have trouble connecting using the Dedicated Administrator Connection.
This was mostly tongue-in-cheek, but I show that there is no performance difference between tabs and spaces. (There is, however, a better reason to prefer tabs: accessibility.)
I address several questions raised during two parameter sniffing webinars I presented with Kimberly L. Tripp and Andy Mallon.
You can now enable this setting at the database level, optimizing performance there while not violating support for other vendor databases (like SharePoint).
See a few creative ways to make use of STRING_AGG() and STRING_SPLIT().
Some very important qualitative questions your company needs to ask itself to be sure you are complying with this new regulation.
Tip : Overview of Database Engine Changes in SQL Server 2017
In this tip, I dig into some of the inner workings of resumable index rebuilds.
Tip : Dealing with the single-character delimiter in STRING_SPLIT function
I illustrate why you should be very careful about oversizing varchar / nvarchar columns.
In this tip, I explain a simple trick to prevent accidental updates or deletes.
Tip : Performance Impact of SQL Server 2016 Row-Level Security
I show a "redundant" non-clustered index outperforming the clustered index with the same key.
I start a new series around disproving prevalent myths regarding SQL Server performance.
I show how to implement simple triggers that maintain trigram-type tables used for better supporting wildcard searches.
In an effort to make leading wildcard searches sargable, I play around with a trigram-type implementation in SQL Server.
I show that DISTINCT and GROUP BY are usually interchangeable, but there are cases where one performs better than the other.
I start digging deeper into the performance of string concatenation methods STRING_AGG and FOR XML PATH.
I take an initial look at the performance of a new function, STRING_AGG, in SQL Server v.Next CTP 1.1.
I describe my steps for setting up a development stack, with VS Code on Mac, managing SQL Server on Ubuntu, inside a Docker container.
After a conversation online, I show where excessive comments in your stored procedures might have an impact on performance.
We've all accidentally placed objects in master. In this tip, I show how you can clean it up a little.
I refreshed the demo kit that helps you learn (or teach!) the ins and outs of SentryOne Plan Explorer.
I explains why I code defensively – matching the case of data type names, even when it is irrelevant.
I run some tests to challenge the notion that CHARINDEX is always faster at pattern matching than LEFT and LIKE.
I talk about two core issues to consider when choosing a standard for stored procedure names.





































