This stairway series was started in 2015. As such, the focus was on SQL Server 2012 and SQL Server 2014 only. When SQL Server 2016 was released, with lots of improvements in the columnstore technology, I decided to finish the planned levels with the original focus on SQL Server 2012 and 2014, and add one extra level with a brief overview of the improvements available in SQL Server 2016.
2020-07-22 (first published: 2017-06-07)
This level introduces of you to the fundamentals of columnstore indexes, introdused in SQL Server 2012 to manage the indexing of very large tables.
2019-12-18 (first published: 2015-02-25)
In Level 7, we looked at optimizing rowgroup elimination for a nonclustered columnstore index. For a clustered columnstore index, the same technique can be used but the steps and syntax change a bit. This will be covered later – but first, let’s take a look at another significant difference between nonclustered and clustered columnstore indexes, […]
2019-01-23 (first published: 2018-06-20)
Earlier levels have shown how Columnstore Indexes work effectively with static data. In most tables however, data is hardly ever static. We are constantly inserting new rows, and updating or deleting existing rows. If you think about what this means for a columnstore index, you will realize that this comes with some unique challenges.
2018-12-19 (first published: 2015-11-04)
The previous levels of this stairway describe details, features, and limitations of columnstore indexes in SQL Server. But they do not answer what should be the first question for every database professional: should columnstore indexes be used in my databases; on what tables should they be used; and should they be clustered or nonclustered columnstore indexes?
2018-10-03 (first published: 2017-05-24)
Hugo Kornelis continues his exploration of the types of queries that can end up running in row mode when accessing columnstore indexes. He demonstrates how careful rewriting can often yield a logically equivalent query that runs in batch mode instead, and therefore gains the best possible performance benefit.
2018-09-05 (first published: 2017-01-04)
Learn how trusted foreign keys (FK) can help or hurt performance.
2018-08-24 (first published: 2016-03-08)
In this level, Hugo Kornelis looks at how to rewrite your queries to best take advantage of batch mode.
2018-08-08 (first published: 2016-11-23)
In this level, Hugo explains what batch mode execution is, how it differs from row mode execution, and what its limitations are.
2018-07-04 (first published: 2016-08-31)
In this level, we will focus on optimization techniques to apply while building the nonclustered columnstore index, which is available in all versions of SQL Server from 2012 up.
2018-06-06 (first published: 2016-03-16)