L'ordre des colonnes dans un index columnstore est-il important?

12

J'ai un tableau avec environ 200 millions de lignes et environ 15 colonnes. Je prévois de créer un COLUMNSTOREindex sur ma table.

Y aura-t-il des changements de performances en fonction de l'ordre des colonnes que j'utilise dans l'index columnstore? Si oui, quelle est la logique derrière cela?

Vinay Kumar Chella
la source
1
Duplicata de: stackoverflow.com/q/9971012/877069
Nick Chammas

Réponses:

15

Non, l'ordre n'a pas d'importance. Chaque colonne est considérée individuellement.

De l'équipe SQL Server (soulignement ajouté):

En règle générale, vous souhaiterez placer toutes les colonnes de votre table dans l'index columnstore. Peu importe l'ordre dans lequel vous répertoriez les colonnes, car un index columnstore n'a pas de clé comme un index B-tree. En interne, les données seront automatiquement réorganisées pour obtenir la meilleure compression.

Aaron Bertrand
la source
N'y a-t-il pas de concept de colonnes à haute densité qui devraient être les premières dans l'ordre et les colonnes à faible densité devraient être les dernières dans l'ordre. Les colonnes fréquemment utilisées doivent être les premières dans l'ordre.
Vinay Kumar Chella
1
Pas que je sache - les index columnstore ne fonctionnent pas comme les index B-tree traditionnels.
Aaron Bertrand
D'accord. J'ai entendu lors d'une conférence mais je n'ai trouvé aucune source pour cela. Attendons quelques commentaires de plus ...
Vinay Kumar Chella
2

l'ordre n'a pas d'importance, qu'importe si vous devez inclure TOUTES les colonnes de la table de base dans l'index columnstore - plus via ma réponse précédente à cette question ici

Lynn Langit
la source
0

Dans SQL Server 2012-2016, vous avez le concept d'élimination de segment ( http://social.technet.microsoft.com/wiki/contents/articles/5651.understanding-segment-elimination.aspx ) et vous pouvez réellement forcer l'ordre de au moins 1 colonne (plus 1 supplémentaire à l'intérieur de chaque partition).

Considérez l'article suivant qui explique le chargement des données pour une meilleure élimination des segments: Chargement des données pour une meilleure élimination des segments

Niko Neugebuer
la source
0

Il y a une excellente réponse existante d'Aaron à partir de 2012, pour développer cela ...

Avec SQL 2014+, vous avez des index clusterstore disponibles. Lors de la création d'un index columnstore en cluster, aucune sélection de colonne ou option de commande n'est disponible. Description des index Columnstore

James Jenkins
la source