Downsides to In-Memory Tables
Produced: 24/06/2018 18:28:00
Had I written this post just a few versions ago when in-memory was released as part of SQL Server 2014 then this would have been a very long post indeed. However, I’m pleased to say that, just a few iterations later, this feature has been improved considerably and is definitely something I now consider when looking to re-architect or tune an environment.

Using In-Memory Temp Tables
Produced: 17/06/2018 10:40:00
Following on from the few posts I’ve written about in-memory tables I wanted to mention this useful tip you can use in order to potentially speed up your temp tables whether that be within stored procedures or maybe within an ETL process.

Indexing In-Memory Data
Produced: 09/06/2018 22:49:00
This is a tricky topic because indexing an in-memory table isn’t the same as indexing a disk-based table. With disk based tables we have clustered or nonclustered indexes to work with and these are the indexes we all know and love. They simply order the data we’re interested in and therefore we can easily understand how SQL uses them to seek and scan. However, this is very much not the case with in-memory indexes.

Creating an In-Memory Table
Produced: 30/05/2018 16:22:00
You know what in-memory tables are, and you have your in-memory filegroup, so now you need to know how to create one…

In-Memory Filegroup
Produced: 21/05/2018 04:15:00
I didn’t know whether to place this in its own post or not, but in the end thought it was wiser than hiding this inside another, loosely related, post…

What is In-Memory OLTP?
Produced: 12/05/2018 09:48:00
This post has been a long time coming as this was a feature added in SQL Server 2014, just over 4 years ago now. Despite having learnt the ins and outs of the feature at the time and thinking it was a potential great leap forward, facts are that I rarely ever used it in any live situation, therefore other posts always came to the fore instead (as it’s a lot easier to knock up demos of features you’re currently using than trying to invent something completely from scratch with no use case).

A Foreign Key Optimisation
Produced: 04/05/2018 15:57:00
I’ve had so many arguments surrounding foreign keys and why they’re there, whether they can be ignored and avoided and removed etc. Personally I’m a fan for the simple fact that I like a proper database with proper referential integrity enforced. But for those who think that’s not important, there are other reasons too and this happens to be one of them:

Where Exists - Quick Tip
Produced: 25/04/2018 08:26:00
Yet another question from one of my training courses (a very useful and fun way to obtain blog topics) was surrounding the difference between the following and whether one or the other should be being used:

Fun With Flags - What’s the Optimizer Doing?
Produced: 17/04/2018 16:43:00
This is quite a fun episode of Fun With Flags because I like poking about inside the Optimizer to see what’s really going on. Doesn’t mean I can influence it… but it can be quite enlightening to have a poke about inside and see what bubbles up to the surface.

ANY and SOME - Lesser Known T-SQL Keywords
Produced: 07/04/2018 09:01:00
This was something else that came up in training and I can’t, for the life of me, remember how and why, but we seemed to end up on the topic and this came out. I thought I’d write a little blog about them just because I was amused (doesn’t take much) by how few people knew these even existed in the T-SQL language. So what are they? Well, they’re basically the same as EXISTS, just a different syntax:

Anti Semi Join - SQL Training Question
Produced: 28/03/2018 13:49:00
This is related to my previous post about the Semi Join and came up under the same context. But this time we’re looking at the Anti Semi Join.

Semi Joins – SQL Training Question
Produced: 19/03/2018 21:34:00
This was something which came up in one of my online courses recently… everyone was fine with all the main join types that appear in SQL Server both syntactical (inner join, left join, right join, full outer join) and internal (nested loops, merge, and hash), but a question arose surrounding some of the joins that you can only see listed on an execution plan and do not specify yourself. In this article I’ll quickly cover one of those… Semi Join:

Clean and Dirty Pages
Produced: 12/03/2018 15:25:00
In an extension to my previous post about using CHECKPOINT in conjunction with DROPCLEANBUFFERS I thought I would give an example to highlight the situation.

How to Clear the Buffer Pool
Produced: 01/03/2018 19:54:00
Since my last post I’ve had a question emailed to me which I just wanted to take a second to clarify as it’s a very good question and one that, I imagine, a lot of people have had or might not fully realise.

Plan Cache Hunt
Produced: 20/02/2018 03:35:00
This is a follow-up to a previous blog post entitled “Which Table or Index is Hogging the Buffer Pool?”… inventive and exciting title, I know…

What’s Running on my SQL Server?
Produced: 10/02/2018 12:13:00
I’d be shocked if anyone reading this blog post hasn’t heard someone in their company saying the following… “SQL Server is slow… what’s running on it?”

Missing Index Information
Produced: 01/02/2018 19:51:00
Now, this post is one that I’ve had in the pipeline for quite a while but I’ve always been VERY reluctant to write it… why, I hear you ask… well it’s because it’s incredibly dangerous…

How Big Are Our Tables?
Produced: 25/01/2018 10:07:00
This is another query that I’ve been asked… although I have to admit that I’m a little confused as to why because there’s a built in report that achieves the same result… but I’ve never shied away from a challenge, so I was happy to oblige.

Which Filegroup Holds My Data?
Produced: 15/01/2018 23:46:00
Well… now that I’ve got a shiny new website (see previous post)… it’s back to the task of posting about SQL Server again…