RECONSTRUIRE - Index clusterisé, TABLE, ou les deux?


9

J'ai du mal à trouver une ressource définitive à ce sujet n'importe où, alors j'espère qu'un gourou pourra me donner une réponse ici.

J'ai un très grand tableau auquel nous avons dû ajouter une colonne. L'index cluster est assez fortement fragmenté, et je veux faire un ALTER INDEX REBUILDpour le nettoyer.

Je fais aussi normalement un ALTER TABLE REBUILDquand je change les colonnes car cela nettoie tous les pointeurs ou se sépare de cette opération.

Dois-je faire les deux puisque nous parlons d'un index clusterisé, qui est essentiellement la table?

Mon soupçon est que ALTER INDEX REBUILDle cluster ne mettra pas à jour tout ce qui le ALTER TABLEveut, mais je crains également que le ALTER TABLEne nettoie pas la fragmentation de l'index.


La reconstruction de l'IIRC ne mettra pas à jour les statistiques des colonnes. Le doute est pertinent car il ne se produira dans aucun des cas. :-)
Aaron Bertrand

Réponses:


6

Si vous reconstruisez l'index clusterisé, il ne devrait pas être nécessaire de reconstruire la table. Si la table était un tas (n'avait pas d'index cluster), vous souhaiterez peut-être la reconstruire.


J'ai lu précédemment que lorsque vous supprimez une colonne, vous devez effectuer une opération ALTER TABLE REBUILDcar cela corrigera les pointeurs non résolus lors de la reconstruction de l'index. N'est-ce plus le cas?
JNK

Quels pointeurs? Je n'ai jamais entendu ça. La suppression d'une colonne n'a pas de pointeurs, sauf si vous parlez de types de données TEXT, NTEXT, IMAGE dans SQL 2000.
mrdenny

1
Je pense que mes préoccupations ne sont pas fondées alors ...
JNK

@JNK: Je suppose que vous voulez dire DBCC CLEANTABLE lorsque les colonnes droppimg qui est la même que la reconstruction de l'index ordonné en clusters stackoverflow.com/a/808368/27535 et dba.stackexchange.com/search?q=%2BDBCC+%2BCLEANTABLE
gbn

0

Reconstruire supprime et recrée l'index. Lorsque vous créez un index clusterisé, il réorganise les lignes d'une table en plus de créer le CIX (une table sans CIX est un segment).


4
La reconstruction ne supprime pas et ne recrée pas l'index cluster. La suppression de l'index cluster met la table en un tas. SI la reconstruction «abandonne et recrée», il doit y avoir un état intermédiaire dans lequel la table est un tas, ce qui n'est pas vrai. Si vous ne me croyez pas qu'il n'y a pas d'étape de tas intermédiaire, considérez que si un tel état de tas intermédiaire était atteint, la `` recréation '' nécessiterait un tri, mais un rapide coup d'œil au plan d'exécution de la reconstruction révèle qu'il n'y a pas de tri.
Remus Rusanu

Cordialement, RR, j'aime lire vos messages, mais je ne sais pas pourquoi vous contesteriez ce point. J'ai déjà lié le MSDN officiel. À partir de la section "Reconstruction des index" à mi-chemin, première instruction: "La reconstruction d'un index supprime et recrée l'index". Il n'y a aucune ambiguïté dans cette déclaration. Le voici à nouveau: msdn.microsoft.com/en-us/library/ms188388.aspx
Eric Higgins

1
BOL et MSDN peuvent avoir un mauvais choix de formulation de temps en temps, puis maintes et maintes fois ... Ce serait un tel cas.
Remus Rusanu
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.