Ist die Reihenfolge der Spalten in einem Columnstore-Index von Bedeutung?

12

Ich habe eine Tabelle mit ~ 200 Millionen Zeilen und ~ 15 Spalten. Ich plane, einen COLUMNSTOREIndex für meine Tabelle zu erstellen .

Wird sich die Leistung aufgrund der Reihenfolge der Spalten ändern, die ich im Columnstore-Index verwende? Wenn ja, welche Logik steckt dahinter?

Vinay Kumar Chella
quelle
1
Duplikat von: stackoverflow.com/q/9971012/877069
Nick Chammas

Antworten:

15

Nein, die Reihenfolge spielt keine Rolle. Jede Spalte wird einzeln betrachtet.

Vom SQL Server-Team (Hervorhebung hinzugefügt):

In der Regel möchten Sie alle Spalten in Ihrer Tabelle in den Columnstore-Index einfügen. Es spielt keine Rolle, in welcher Reihenfolge Sie die Spalten auflisten, da ein Columnstore-Index keinen Schlüssel wie ein B-Tree-Index hat. Intern werden die Daten automatisch neu geordnet, um die beste Komprimierung zu erzielen.

Aaron Bertrand
quelle
Gibt es kein Konzept, dass Spalten mit hoher Dichte an erster Stelle in der Reihenfolge stehen sollten und Spalten mit niedriger Dichte an letzter Stelle in der Reihenfolge stehen sollten? Häufig verwendete Spalten sollten an erster Stelle in der Reihenfolge stehen.
Vinay Kumar Chella
1
Nicht, dass mir das bewusst wäre - Columnstore-Indizes funktionieren nicht wie herkömmliche B-Tree-Indizes.
Aaron Bertrand
In Ordnung. Ich habe auf einer Konferenz gehört, aber keine Quelle dafür gefunden. Warten wir auf weitere Kommentare ...
Vinay Kumar Chella
2

Reihenfolge spielt keine Rolle, was ist wichtig, wenn Sie ALLE Spalten aus der Basistabelle in den Columnstore-Index aufnehmen sollten - mehr über meine vorherige Antwort auf diese Frage hier

Lynn Langit
quelle
0

Es gibt eine großartige Antwort von Aaron aus dem Jahr 2012, um das zu erweitern ...

Mit SQL 2014+ stehen Clustered Columnstore-Indizes zur Verfügung. Beim Erstellen eines Clustered Columnstore-Index sind keine Optionen für die Spaltenauswahl oder -reihenfolge verfügbar. Beschriebene Columnstore-Indizes

James Jenkins
quelle