Quantcast
Channel: CodeSection,代码区,SQL Server(mssql)数据库 技术分享 - CodeSec
Viewing all articles
Browse latest Browse all 3160

Index-Cheat-Sheet. The complete Index-compatibility Matrix for SQL Server

$
0
0

(DE)

Mit dem Auskommen der Columnstore Technologie und auch der In-Memory Technologie in SQL Server 2014 sind insgesamt 4 neue Indextypen zu den althergebrachten page-basierten hinzugekommen.

Wo es früher nur die Auswahl an Clustered oder Non-Clustered“ (Deutsch auch gruppiert oder nicht-gruppiert“) gab, gibt es mittlerweile auch Clustered Columnstore, Non-Clustered Columnstore, Nonclustered Hash und Nonclustered Range-Indexe.

Und seit SQL Server 2016 sind diese Indextypen untereinander noch weiter kombinierbar.

Vereinfacht ausgedrückt lassen sich nun sowohl die Page-basierten Indexe als auch die Memory-optimierten Tabellen mit Columnstore Indexen kombinieren . Page(Disk“)-basiert + Memory-optimimiert funktioniert jedoch nicht .

Um auf schnelle Weise sehen zu knnen, welche Kombination an Indexen mglich ist, habe ich eine Matrix erstellt, welche die Kombinationsmglichkeiten darstellt .

Hier ist sie, die Index-Kompatibilitts-Matrix“:

Insgesamt sind gibt es also mittlerweile 4 verschiedene Basis-Strukturen :

Heaps Clustered Indexe page-basiert Clustered Columnstore Indexe und sogenannte varHeaps , die Struktur der memory-optimierten Tabellen .

- Nicht enthalten sind: Indexed Views, XML-Indexe und Rumliche (Spatial) Indexe, sowie die Implikationen bei Sparse-Columns.

Prinzipiell basieren auch diese alle noch auf den page-basierten b-Tree Indexen, sind durch die teilweise auf der CLR basierenden Datentypen jedoch wesentlich eingeschrnkter.

- Unique Indexe habe ich nicht gesondert betrachtet, da sich diese für meine Betrachtung nicht anders als ihre Nicht-Unique Pedanten verhalten.

Zustzlichhabe ich noch einige Grundregeln und Hchstgrenzen mit aufgenommen.

Dem aufmerksamen Leser wird dabei vielleicht auffallen, dass die maximale Anzahl der Index-Spalten in SQL Server 2016 von 16 auf 32 angehoben worden ist. Bitte seht das aber nicht als Einladung an, diese Limit auch nur Ansatzweise auszunutzen!

Ich hoffe diese bersichten sind eine hilfreiche Erinnerungsstütze nicht nur für Einsteiger, sondern auch für solche, die sich nicht immer an jede Regel erinnern knnen. Zum Weiterlesen sind auch einige Links auf BOL hinterlegt.

Hinweis: Die bersicht basiert auf dem aktuellen Stand der Technik: SQL Server 2016. Bereits gegenüber SQL Server 2014 gibt es wesentliche Unterschiede, und viel mehr noch zu 2012.

Kurz zusammengefasst gab es in der Version 2012 noch keine Memory-optimierten Tabellen und Clustered Columnstore Indexe. Diese kamen erst 2014 in den SQL Server. Und erst im 2016er gibt es die Kombinationsmglichkeiten.

Folgennde Artikel gab es zu diesen Themen bereits von mir:

The SQL Server 2016 In-Memory Evolution from row-store to columnstore to in-memory operational analytics SQL Server 2016 the Security & Performance Release / ein Sicherheits- und Performance-Release Artikel SQL Server 2014 Neues Fundament“ in iX Ausgabe 5/2014, Richtigstellungen zu In-Memory OLTP und ColumnStore Indexes und warum AlwaysOn nicht gleich Always On ist / SQL Server 2014 New Fundament” in iX Issue 5/2014, corrections in In-Memory OLTP and ColumnStore Indexes, and why AlwaysOn is not the same as Always On The Columnstore Indexes & Batch Mode Processing (R)Evolution in SQL Server 2014

Happy Indexing

Andreas


Viewing all articles
Browse latest Browse all 3160

Trending Articles