Cette page vous a-t-elle été utile ?
Votre avis sur ce contenu est important. N'hésitez pas à nous faire part de vos commentaires.
Vous avez d'autres commentaires ?
1500 caractères restants
Exporter (0) Imprimer
Développer tout
Développer Réduire
Cet article a fait l'objet d'une traduction manuelle. Déplacez votre pointeur sur les phrases de l'article pour voir la version originale de ce texte. Informations supplémentaires.
Traduction
Source

ALTER INDEX (Transact-SQL)

Modifie une table ou un index de vue (relationnel ou XML) en désactivant, en reconstruisant ou en réorganisant l'index d'une part, ou en définissant les options portant sur l'index d'autre part.

S'applique à : SQL Server (SQL Server 2008 jusqu'à la version actuelle), Base de données SQL Azure.

Icône Lien de rubrique Conventions de la syntaxe Transact-SQL

-- SQL Server Syntax

ALTER INDEX { index_name | ALL }
    ON <object>
    { REBUILD
        [ PARTITION = ALL ]
        [ WITH ( <rebuild_index_option> [ ,...n ] ) ] 
        | [ PARTITION = partition_number 
              [ WITH ( <single_partition_rebuild_index_option> ) [ ,...n ] ]
          ]  
    | DISABLE
    | REORGANIZE 
        [ PARTITION = partition_number ]
        [ WITH ( LOB_COMPACTION = { ON | OFF } ) ]
    | SET ( <set_index_option> [ ,...n ] ) 
    }
[ ; ]

<object> ::=
{
    [ database_name. [ schema_name ] . | schema_name. ]
    table_or_view_name
}

<rebuild_index_option > ::=
{
    PAD_INDEX = { ON | OFF }
  | FILLFACTOR = fillfactor 
  | SORT_IN_TEMPDB = { ON | OFF }
  | IGNORE_DUP_KEY = { ON | OFF }
  | STATISTICS_NORECOMPUTE = { ON | OFF }
  | STATISTICS_INCREMENTAL = { ON | OFF }
  | ONLINE = { ON [ ( <low_priority_lock_wait> ) ] | OFF } 
  | ALLOW_ROW_LOCKS = { ON | OFF }
  | ALLOW_PAGE_LOCKS = { ON | OFF }
  | MAXDOP = max_degree_of_parallelism
  | DATA_COMPRESSION = { NONE | ROW | PAGE | COLUMNSTORE | COLUMNSTORE_ARCHIVE } 
     [ ON PARTITIONS ( { <partition_number_expression> | <range> } 
     [ , ...n ] ) ]
}
<range> ::= 
<partition_number_expression> TO <partition_number_expression>

<single_partition_rebuild_index_option> ::=
{
    SORT_IN_TEMPDB = { ON | OFF }
  | MAXDOP = max_degree_of_parallelism
  | DATA_COMPRESSION = { NONE | ROW | PAGE | COLUMNSTORE | COLUMNSTORE_ARCHIVE} }
  | ONLINE = { ON [ ( <low_priority_lock_wait> ) ] | OFF }
}

<set_index_option>::=
{
    ALLOW_ROW_LOCKS = { ON | OFF }
  | ALLOW_PAGE_LOCKS = { ON | OFF }
  | IGNORE_DUP_KEY = { ON | OFF }
  | STATISTICS_NORECOMPUTE = { ON | OFF }
}

<low_priority_lock_wait>::=
{
    WAIT_AT_LOW_PRIORITY ( MAX_DURATION = <time> [ MINUTES ] , 
                           ABORT_AFTER_WAIT = { NONE | SELF | BLOCKERS } )
}
-- Windows Azure SQL Database Syntax

ALTER INDEX { index_name | ALL }
    ON <object>
    { REBUILD 
        [
          [ WITH ( <rebuild_index_option> [ ,...n ] ) ] 

        ] 
    | DISABLE
    | SET ( <set_index_option> [ ,...n ] ) 
    }
 [ ; ] 

<object> ::= 
{
    [ database_name. [ schema_name ] . | schema_name. ] 
    table_or_view_name
}

<rebuild_index_option > ::= 
{
   IGNORE_DUP_KEY = { ON | OFF }
  | STATISTICS_NORECOMPUTE = { ON | OFF }
  | ONLINE = { ON | OFF } 
}

<set_index_option>::=
{
   IGNORE_DUP_KEY = { ON | OFF }
  | STATISTICS_NORECOMPUTE = { ON | OFF }
}

index_name

Nom de l'index. Les noms d'index doivent être uniques dans une table ou une vue, mais ne doivent pas être nécessairement uniques dans une base de données. Les noms d'index doivent se conformer aux règles régissant les identificateurs.

ALL

Indique tous les index associés à une table ou à une vue indépendamment du type d'index. L'ajout de l'option ALL provoque un échec de l'instruction si des index se trouvent dans un groupe de fichiers hors connexion ou en lecture seule ou si l'opération spécifiée n'est pas autorisée sur certains types d'index. Le tableau suivant répertorie les types d'opérations ainsi que les types d'index non autorisés.

Spécification de l'option ALL avec cette opération

Entraîne un échec si la table possède des

REBUILD WITH ONLINE = ON

Index XML

Index spatial

Index columnstore

S'applique à : SQL Server 2012 jusqu'à SQL Server 2014.

REBUILD PARTITION = partition_number

Index non partitionné, index XML, index spatial ou index désactivé

REORGANIZE

Index pour lesquels ALLOW_PAGE_LOCKS a la valeur OFF

REORGANIZE PARTITION = partition_number

Index non partitionné, index XML, index spatial ou index désactivé

IGNORE_DUP_KEY = ON

Index XML

Index spatial

Index columnstore

S'applique à : SQL Server 2012 jusqu'à SQL Server 2014.

ONLINE = ON

Index XML

Index spatial

Index columnstore

S'applique à : SQL Server 2012 jusqu'à SQL Server 2014.

Attention Attention

Pour plus d'informations sur les opérations d'index pouvant être effectuées en ligne, consultez Instructions pour les opérations d'index en ligne.

Si ALL est spécifié avec PARTITION = partition_number, tous les index doivent être alignés. Ceci revient à les partitionner d'après des fonctions de partition équivalentes. L'utilisation conjointe de ALL avec PARTITION entraîne la reconstruction ou la réorganisation de toutes les partitions d'index portant la même valeur de partition_number. Pour plus d'informations sur les index partitionnés, consultez Tables et index partitionnés.

database_name

Nom de la base de données.

schema_name

Nom du schéma auquel la table ou la vue appartient.

table_or_view_name

Nom de la table ou de la vue associée à l'index. Pour afficher un rapport des index relatifs à un objet, utilisez l'affichage catalogue sys.indexes.

La Base de données SQL Windows Azure prend en charge le format de nom en trois parties nom_bd.[nom_schéma].nom_table_ou_vue lorsque nom_bd est la base de données active, ou lorsque nom_bd est la base de données tempdb et nom_table_ou_vue commence par #.

REBUILD [ WITH (<rebuild_index_option> [ ,... n]) ]

Index à reconstruire d'après les mêmes colonnes, le même type d'index, le même attribut assurant son unicité ainsi que le même ordre de tri. Pour les index columnstore, l'ordre de tri ne s'applique pas. Cette clause équivaut à DBCC DBREINDEX. REBUILD permet de réactiver un index désactivé. La reconstruction portant sur un index cluster n'entraîne pas celle des index non cluster associés, à moins que le mot clé ALL ne soit spécifié. Si les options propres aux index ne sont pas indiquées, leurs valeurs existantes stockées dans sys.indexes sont celles qui prévalent dans ce cas. Si une valeur venait à ne pas se trouver dans sys.indexes, celle indiquée par défaut dans la définition de l'argument de l'option s'applique alors.

Si l'option ALL est indiquée et que la table sous-jacente correspond à un segment de mémoire, l'opération de reconstruction n'a alors aucun effet sur la table. Tous les index non cluster associés à la table sont donc reconstruits.

L'opération de reconstruction peut être consignée dans un journal au minimum si le mode de récupération de base de données est défini sur Utilisant les journaux de transactions ou sur Simple.

Remarque Remarque

Si vous reconstruisez un index XML primaire, la table utilisateur sous-jacente devient indisponible pour toute la durée de l'opération d'index.

PARTITION

S'applique à : SQL Server 2008 jusqu'à SQL Server 2014.

Indique que seule une partition d'un index doit être reconstruite ou réorganisée. PARTITION ne peut pas être spécifié si index_name n'est pas un index partitionné.

PARTITION = ALL reconstruit toutes les partitions.

Attention Attention

La création et la reconstruction des index non alignés sur une table contenant plus de 1 000 partitions sont possibles, mais ne sont pas prises en charge. Ces opérations peuvent entraîner une dégradation des performances ou une consommation de mémoire excessive. Nous vous recommandons d'utiliser uniquement des index alignés lorsque le nombre de partitions est supérieur à 1000.

partition_number

S'applique à : SQL Server 2008 jusqu'à SQL Server 2014.

Numéro de partition d'un index partitionné à reconstruire ou à réorganiser. partition_number est une expression de constante qui peut référencer des variables. Cela inclut les fonctions ou variables de types définies par l'utilisateur et les fonctions définies par l'utilisateur, mais exclut l'instruction Transact-SQL. partition_number doit exister, sinon l'instruction échoue.

WITH (<single_partition_rebuild_index_option>)

S'applique à : SQL Server 2008 jusqu'à SQL Server 2014.

SORT_IN_TEMPDB, MAXDOP et DATA_COMPRESSION sont les options qui peuvent être spécifiées lors de la reconstruction d'une partition unique (PARTITION = n). Les index XML ne peuvent pas être indiqués dans une opération de reconstruction d'une seule partition.

DISABLE

Marque l'index comme désactivé et non disponible pour être utilisé par le Moteur de base de données. Tout index peut être désactivé. La définition d'un index désactivé est conservé dans le catalogue système sans y inclure de données sous-jacentes. Désactiver un index cluster permet d'éviter l'accès aux données de la table sous-jacente par les utilisateurs. Pour activer un index, utilisez ALTER INDEX REBUILD ou CREATE INDEX WITH DROP_EXISTING. Pour plus d'informations, consultez Désactiver les index et contraintes et Activer les index et contraintes.

REORGANIZE

Indique que le niveau de feuille de l'index va être réorganisé. Pour les index columnstore cluster, spécifie que tous les rowgroups CLOSED seront déplacés dans le columnstore. L'instruction ALTER INDEX REORGANIZE est toujours exécutée en ligne. En d'autres termes, les verrous de tables bloquants à long terme ne sont pas conservés, ce qui permet aux requêtes et aux mises à jour de la table sous-jacente de se poursuivre pendant la transaction ALTER INDEX REORGANIZE. REORGANIZE ne peut pas être indiqué pour un index désactivé ou un index dont ALLOW_PAGE_LOCKS est désactivé (OFF). REORGANIZE effectué au sein d'une transaction n'est pas restauré si la transaction est restaurée.

WITH ( LOB_COMPACTION = { ON | OFF } )

S'applique à : SQL Server 2008 jusqu'à SQL Server 2014.

Indique que toutes les pages qui contiennent des données LOB sont compactées. Les types de données LOB sont les suivants : image, text, ntext, varchar(max), nvarchar(max), varbinary(max) et xml. Compacter ces données contribue à améliorer l'utilisation de l'espace disque. La valeur par défaut est ON.

ON

Toutes les pages qui contiennent des données d'objet volumineux sont compactées.

La réorganisation d'un index cluster spécifié compacte toutes les colonnes LOB contenues dans l'index cluster.

La réorganisation d'un index non cluster compacte toutes les colonnes LOB qui sont des colonnes non-clés (incluses) dans l'index. Si ALL est indiqué, tous les index associés à la table ou à la vue spécifiée sont réorganisés ; toutes les colonnes LOB associées à l'index cluster, à la table sous-jacente ou à l'index non cluster possédant des colonnes incluses sont compactées.

OFF

Les pages contenant des données d'objet volumineux ne sont pas compactées.

La valeur OFF n'a aucun effet sur un segment de mémoire.

La clause LOB_COMPACTION est ignorée si les colonnes LOB sont manquantes.

SET ( <set_index option> [ ,... n] )

Indique des options d'index sans pour autant reconstruire ou réorganiser l'index. SET ne peut pas être spécifié pour un index désactivé.

PAD_INDEX = { ON | OFF }

S'applique à : SQL Server 2008 jusqu'à SQL Server 2014.

Spécifie le remplissage de l'index. La valeur par défaut est OFF.

ON

Le pourcentage d'espace libre indiqué par FILLFACTOR est appliqué aux pages de niveau intermédiaire de l'index. Si FILLFACTOR n'est pas précisé alors que PAD_INDEX a la valeur ON, la valeur du facteur de remplissage stocké dans sys.indexes est utilisée.

OFF ou fillfactor n'est pas spécifié

Les pages de niveau intermédiaire sont remplies jusqu'à la presque totalité de la capacité. Cela laisse suffisamment d'espace libre pour au moins une ligne de la taille maximale que l'index peut occuper, d'après un ensemble de clés sur les pages intermédiaires.

Pour plus d'informations, consultez CREATE INDEX (Transact-SQL).

FILLFACTOR = fillfactor

S'applique à : SQL Server 2008 jusqu'à SQL Server 2014.

Spécifie un pourcentage indiquant le taux de remplissage appliqué par le Moteur de base de données au niveau feuille de chaque page d'index lors de la création ou de la modification de l'index. fillfactor doit être une valeur entière comprise entre 1 et 100. La valeur par défaut est 0. Les taux de remplissage 0 et 100 sont identiques en tous points.

Un paramètre FILLFACTOR explicite ne s'applique que lors de la première création ou reconstruction de l'index. Le Moteur de base de données ne conserve pas dynamiquement dans les pages le pourcentage d'espace libre défini. Pour plus d'informations, consultez CREATE INDEX (Transact-SQL).

Pour afficher le paramètre du facteur de remplissage, utilisez sys.indexes.

Important Important

La création ou la modification d'un index cluster avec une valeur de FILLFACTOR affecte la quantité de l'espace de stockage occupé par les données, car le Moteur de base de données redistribue les données lorsqu'il crée l'index en question.

SORT_IN_TEMPDB = { ON | OFF }

S'applique à : SQL Server 2008 jusqu'à SQL Server 2014.

Indique si les résultats du tri doivent être stockés dans tempdb. La valeur par défaut est OFF.

ON

Les résultats de tri intermédiaires utilisés pour créer l'index sont stockés dans tempdb. Si tempdb ne se trouve pas sur le même groupe de disques que la base de données utilisateur, le temps nécessaire à la création de l'index peut être réduit. Toutefois, une plus grande quantité d'espace disque est alors utilisée lors de la création de l'index.

OFF

Les résultats de tri intermédiaires sont stockés dans la même base de données que l'index.

Si une opération de tri n'est pas requise ou si le tri peut s'effectuer en mémoire, l'option SORT_IN_TEMPDB est ignorée.

Pour plus d'informations, consultez Option SORT_IN_TEMPDB pour les index.

IGNORE_DUP_KEY = { ON | OFF }

Spécifie la réponse d'erreur lorsqu'une opération d'insertion essaie d'insérer des valeurs de clés en double dans un index unique. L'option IGNORE_DUP_KEY s'applique uniquement aux opérations d'insertion après la création ou la régénération de l'index. La valeur par défaut est OFF.

ON

Un message d'avertissement s'affichera lorsque des valeurs de clé en double sont insérées dans un index unique. Seules les lignes qui violent la contrainte d'unicité échouent.

OFF

Un message d'erreur s'affichera lorsque des valeurs de clé en double sont insérées dans un index unique. L'intégralité de l'opération INSERT sera restaurée.

IGNORE_DUP_KEY ne peut pas être activé (ON) dans le cas d'index créés sur une vue, d'index non uniques, d'index XML, d'index spatiaux et d'index filtrés.

Pour afficher IGNORE_DUP_KEY, utilisez sys.indexes.

Dans la syntaxe de compatibilité descendante, WITH IGNORE_DUP_KEY est équivalent à WITH IGNORE_DUP_KEY = ON.

STATISTICS_NORECOMPUTE = { ON | OFF }

Spécifie si les statistiques de distribution sont recalculées. La valeur par défaut est OFF.

ON

Les statistiques obsolètes ne sont pas recalculées automatiquement.

OFF

La mise à jour automatique des statistiques est activée.

Pour restaurer la mise à jour automatique des statistiques, affectez la valeur OFF à STATISTICS_NORECOMPUTE ou exécutez UPDATE STATISTICS sans la clause NORECOMPUTE.

Important Important

Si vous désactivez le recalcul automatique des statistiques de distribution, il se peut que cela empêche l'optimiseur de requête de choisir les plans d'exécution optimaux pour les requêtes impliquant la table.

STATISTICS_INCREMENTAL = { ON | OFF }

Lorsque la valeur ON est définie, les statistiques sont créées par partition. Avec la valeur OFF, l'arborescence des statistiques est supprimée et SQL Server recalcule les statistiques. La valeur par défaut est OFF.

Si les statistiques par partition ne sont pas prises en charge, l'option est ignorée et un avertissement est généré. Les statistiques incrémentielles ne sont pas prises en charge pour les types de statistiques suivants :

  • statistiques créées avec des index qui ne sont pas alignés sur les partitions avec la table de base ;

  • statistiques créées sur les bases de données secondaires lisibles AlwaysOn ;

  • statistiques créées sur les bases de données en lecture seule ;

  • statistiques créées sur les index filtrés ;

  • statistiques créées sur les vues ;

  • statistiques créées sur les tables internes ;

  • Statistiques créées avec les index spatiaux ou les index XML.

S'applique à : SQL Server 2014 jusqu'à SQL Server 2014.

ONLINE = { ON | OFF } < s'applique à rebuild_index_option>

Indique si les tables sous-jacentes et les index associés sont disponibles pour les requêtes et la modification de données pendant l'opération d'index. La valeur par défaut est OFF.

Pour un index XML ou un index spatial, seul ONLINE = OFF est pris en charge et si ONLINE a la valeur ON, une erreur est générée.

Remarque Remarque

Les opérations d'index en ligne ne sont pas disponibles dans toutes les éditions de Microsoft SQL Server. Pour obtenir une liste des fonctionnalités prises en charge par les éditions de SQL Server, consultez Fonctionnalités prises en charge par les éditions de SQL Server 2014.

ON

Les verrous de table à long terme ne sont pas maintenus pendant la durée de l'opération d'index. Lors de la principale phase de l'indexation, seul le verrou de partage intentionnel (IS, Intent Share) est maintenu sur la table source. Cela permet aux requêtes ou aux mises à jour effectuées dans la table et les index sous-jacents de continuer. Au début de l'opération, un verrou partagé (S, Shared) est très brièvement maintenu sur l'objet source. À la fin de l'opération, un verrou partagé (S) est très brièvement maintenu sur la source si un index non cluster est en cours de création ou bien un verrou SCH-M (Modification du schéma) est acquis lorsqu'un index cluster est créé ou supprimé en ligne ou lorsqu'un index cluster ou non cluster est en cours de reconstruction. ONLINE ne peut pas prendre la valeur ON si un index est en cours de création sur une table locale temporaire.

OFF

Des verrous de table sont appliqués pendant l'opération d'indexation. Une opération d'index hors connexion qui crée, reconstruit ou supprime un index cluster, spatial ou XML, ou qui reconstruit ou supprime un index non cluster, acquiert un verrou Sch-M (Modification du schéma) sur la table. Cela empêche tous les utilisateurs d'accéder à la table sous-jacente pendant la durée de l'opération. Une opération d'indexation hors ligne qui crée un index non cluster acquiert un verrou partagé (S, Shared) sur la table. Cela empêche la mise à jour de la table sous-jacente, mais autorise les opérations de lecture, telles que des instructions SELECT.

Pour plus d'informations, consultez Fonctionnement des opérations d'index en ligne.

Les index, notamment les index portant sur des tables temporaires globales, ne peuvent pas être reconstruits en ligne, à l'exception des index suivants :

  • Index XML

  • index portant sur des tables temporaires locales ;

  • sous-ensemble d'un index partitionné (un index partitionné entier peut être reconstruit en ligne).

ALLOW_ROW_LOCKS = { ON | OFF }

S'applique à : SQL Server 2008 jusqu'à SQL Server 2014.

Indique si les verrous de ligne sont autorisés ou non. La valeur par défaut est ON.

ON

Les verrous de ligne sont autorisés lors de l'accès à l'index. Le Moteur de base de données détermine le moment où les verrous de ligne sont utilisés.

OFF

Les verrous de ligne ne sont pas utilisés.

ALLOW_PAGE_LOCKS = { ON | OFF }

S'applique à : SQL Server 2008 jusqu'à SQL Server 2014.

Indique si les verrous de page sont autorisés. La valeur par défaut est ON.

ON

Les verrous de page sont autorisés lors de l'accès à l'index. Le Moteur de base de données détermine le moment où les verrous de page sont utilisés.

OFF

Les verrous de page ne sont pas utilisés.

Remarque Remarque

Un index ne peut pas être réorganisé lorsque ALLOW_PAGE_LOCKS est désactivé (OFF).

MAXDOP =max_degree_of_parallelism

S'applique à : SQL Server 2008 jusqu'à SQL Server 2014.

Remplace l'option de configuration max degree of parallelism pendant la durée de l'opération d'index. Pour plus d'informations, consultez Configurer l'option de configuration du serveur Degré maximal de parallélisme. Utilisez MAXDOP pour limiter le nombre de processeurs utilisés dans une exécution de plan parallèle. Le nombre maximal de processeurs est égal à 64.

Important Important

Bien que l'option MAXDOP soit prise en charge syntaxiquement pour tous les index XML, pour un index spatial ou un XML primaire, ALTER INDEX utilise actuellement seulement un processeur unique.

Valeurs possibles de max_degree_of_parallelism :

1

Supprime la création de plans parallèles.

>1

Limite au nombre spécifié le nombre maximal de processeurs utilisés dans le traitement en parallèle des index.

0 (valeur par défaut)

Utilise le nombre réel de processeurs ou un nombre de processeurs inférieur en fonction de la charge de travail actuelle du système.

Pour plus d'informations, consultez Configurer des opérations d'index parallèles.

Remarque Remarque

Les opérations d'index parallèles ne sont pas disponibles dans toutes les éditions de Microsoft SQL Server. Pour obtenir une liste des fonctionnalités prises en charge par les éditions de SQL Server, consultez Fonctionnalités prises en charge par les éditions de SQL Server 2014.

DATA_COMPRESSION

S'applique à : SQL Server 2008 jusqu'à SQL Server 2014.

Spécifie l'option de compression de données pour l'index, le numéro de partition ou la plage de partitions spécifiés. Les options disponibles sont les suivantes :

NONE

L'index ou les partitions spécifiées ne sont pas compressés. Ne s'applique pas aux index columnstore.

ROW

L'index ou les partitions spécifiées sont compressés au moyen de la compression de ligne. Ne s'applique pas aux index columnstore.

PAGE

L'index ou les partitions spécifiées sont compressés au moyen de la compression de page. Ne s'applique pas aux index columnstore.

COLUMNSTORE

S'applique à : SQL Server 2014 jusqu'à SQL Server 2014.

S'applique uniquement aux index columnstore, y compris aux index columnstore non cluster et cluster. COLUMNSTORE spécifie qu'il faut décompresser l'index ou les partitions spécifiées compressés à l'aide de l'option COLUMNSTORE_ARCHIVE. Lorsque les données sont restaurées, elles continuent à être compressées à l'aide de la compression columnstore utilisée pour tous les index columnstore.

COLUMNSTORE_ARCHIVE

S'applique à : SQL Server 2014 jusqu'à SQL Server 2014.

S'applique uniquement aux index columnstore, y compris aux index columnstore non cluster et cluster. COLUMNSTORE_ARCHIVE compressera davantage la partition spécifiée en une plus petite taille. Peut être utilisé pour l'archivage, ou d'autres situations qui nécessitent moins de stockage et supportent plus de temps pour le stockage et la récupération.

Pour plus d'informations sur la compression, consultez Compression de données.

ON PARTITIONS ( { <partition_number_expression> | <plage> } [,...n] )

S'applique à : SQL Server 2008 jusqu'à SQL Server 2014.

Spécifie les partitions auxquelles le paramètre DATA_COMPRESSION s'applique. Si l'index n'est pas partitionné, l'argument ON PARTITIONS générera une erreur. Si la clause ON PARTITIONS n'est pas fournie, l'option DATA_COMPRESSION s'applique à toutes les partitions d'un index partitionné.

<partition_number_expression> peut être spécifié des manières suivantes :

  • Spécifiez le numéro d'une partition, par exemple : ON PARTITIONS (2).

  • Spécifiez des numéros de partition pour plusieurs partitions individuelles séparées par des virgules, par exemple : ON PARTITIONS (1, 5).

  • Spécifiez à la fois des plages et des partitions individuelles : ON PARTITIONS (2, 4, 6 TO 8).

<range> peut être spécifié sous la forme de numéros de partitions séparés par le mot TO, par exemple : ON PARTITIONS (6 TO 8).

Pour définir des types différents de compression de données pour des partitions différentes, spécifiez plusieurs fois l'option DATA_COMPRESSION, par exemple :

REBUILD WITH 
(
DATA_COMPRESSION = NONE ON PARTITIONS (1), 
DATA_COMPRESSION = ROW ON PARTITIONS (2, 4, 6 TO 8), 
DATA_COMPRESSION = PAGE ON PARTITIONS (3, 5)
);
ONLINE = { ON | OFF } < s'applique à single_partition_rebuild_index_option>

Spécifie si un index ou une partition d'index d'une table sous-jacente peut être reconstruit en ligne ou hors connexion. Si REBUILD est effectué en ligne (ON) les données de cette table sont disponibles pour les requêtes et la modification de données pendant l'opération d'index. La valeur par défaut est OFF.

ON

Les verrous de table à long terme ne sont pas maintenus pendant la durée de l'opération d'index. Lors de la principale phase de l'indexation, seul le verrou de partage intentionnel (IS, Intent Share) est maintenu sur la table source. Un verrou S sur la table est requis au début de la reconstruction de l'index, et un verrou Sch-M sur la table à la fin de la reconstruction de l'index en ligne. Bien que les deux verrous soient des verrous de métadonnées courtes, le verrou Sch-M doit notamment attendre que toutes les transactions bloquantes soient terminées. Pendant le temps d'attente, le verrou Sch-M bloque toutes les autres transactions qui attendent derrière ce verrou en cas d'accès à la même table.

Remarque Remarque

La reconstruction d'index en ligne peut définir les options low_priority_lock_wait décrites plus loin dans cette section.

OFF

Des verrous de table sont appliqués pendant l'opération d'indexation. Cela empêche tous les utilisateurs d'accéder à la table sous-jacente pendant la durée de l'opération.

WAIT_AT_LOW_PRIORITY

S'applique à : SQL Server 2014 jusqu'à SQL Server 2014.

Une reconstruction d'index en ligne doit attendre les opérations de blocage sur cette table. WAIT_AT_LOW_PRIORITY indique que l'opération de reconstruction de l'index en ligne doit attendre les verrous de faible priorité, en permettant à d'autres opérations de continuer pendant que l'opération de construction de l'index en ligne est en train de patienter. Omettre l'option WAIT AT LOW PRIORITY équivaut à WAIT_AT_LOW_PRIORITY ( MAX_DURATION = 0 minutes, ABORT_AFTER_WAIT = NONE).

MAX_DURATION = time [MINUTES ]

S'applique à : SQL Server 2014 jusqu'à SQL Server 2014.

Temps d'attente (valeur entière spécifiée en minutes) pendant lequel les verrous de reconstruction d'index en ligne devront attendre avec une faible priorité lors de l'exécution de la commande DDL. Si l'opération est bloquée pendant la durée MAX_DURATION, l'une des actions ABORT_AFTER_WAIT sera exécutée. Le temps MAX_DURATION est toujours en minutes, et le mot MINUTES peut être omis.

ABORT_AFTER_WAIT = [NONE | SELF | BLOCKERS } ]

S'applique à : SQL Server 2014 jusqu'à SQL Server 2014.

NONE

Continuez à attendre le verrou avec la priorité normale.

SELF

Quittez l'opération DDL de reconstruction de l'index en ligne actuellement exécutée sans effectuer aucune action.

BLOCKERS

Annulez toutes les transactions utilisateur qui bloquent l'opération DDL de reconstruction de l'index en ligne afin que l'opération puisse continuer. L'option BLOCKERS requiert que la connexion ait une autorisation ALTER ANY CONNECTION.

ALTER INDEX ne peut pas être utilisé pour recréer la partition d'un index ou le déplacer vers un autre groupe de fichiers. Cette instruction ne peut pas être utilisée pour modifier la définition de l'index, comme l'ajout ou la suppression de colonnes ou la modification de l'ordre des colonnes. Exécutez CREATE INDEX avec la clause DROP_EXISTING afin de procéder aux opérations suivantes.

Si une option n'est pas spécifiée de façon explicite, le paramètre actuel s'applique. Par exemple, si un paramètre FILLFACTOR n'est pas indiqué dans la clause REBUILD, la valeur de facteur de remplissage stockée dans le catalogue système est utilisée lors du processus de reconstruction. Pour consulter les paramètres d'options d'index en cours, utilisez sys.indexes.

Remarque Remarque

Les valeurs pour les options ONLINE, MAXDOP et SORT_IN_TEMPDB ne sont pas stockées dans le catalogue système. À moins qu'elle ne soit précisée dans l'instruction d'index, la valeur par défaut de l'option est alors utilisée.

Sur des ordinateurs multiprocesseurs, comme c'est aussi le cas pour d'autres requêtes, ALTER INDEX REBUILD utilise automatiquement plus de processeurs pour pouvoir procéder aux opérations d'analyse et de tri associées à la modification de l'index. Lors de l'exécution de ALTER INDEX REORGANIZE, que ce soit avec ou sans l'option LOB_COMPACTION, la valeur de Max Degree of Parallelism correspond à une opération mono-thread. Pour plus d'informations, consultez Configurer des opérations d'index parallèles.

Un index ne peut pas être réorganisé ou reconstruit si le groupe de fichiers dans lequel il se trouve est hors connexion ou en lecture seule. Si le mot clé ALL est spécifié et que des index se trouvent dans un groupe de fichiers hors connexion ou en lecture seule, l'instruction échoue.

Reconstruction des index

La reconstruction d'un index entraîne sa suppression puis sa recréation. Ceci permet d'éviter toute fragmentation, de libérer de l'espace disque en compactant les pages d'après le paramètre du facteur de remplissage spécifié ou déjà existant et en retriant les lignes de l'index en pages contiguës. Quand ALL est précisé, tous les index sur la table sont supprimés puis reconstruits en une seule transaction. Il n'est pas nécessaire de supprimer les contraintes FOREIGN KEY au préalable. Lorsque de la reconstruction d'index contenant au moins 128 étendues, le Moteur de base de données diffère les désallocations de pages ainsi que les verrous qui y sont associés jusqu'à ce que la transaction soit validée.

Bien souvent, la reconstruction ou la réorganisation de petits index ne réduit pas la fragmentation. Les pages des petits index sont stockées sur des extensions mixtes. Les extensions mixtes sont partagées par huit objets maximum ; par conséquent, la fragmentation dans un petit index peut ne pas être réduite après sa réorganisation ou sa reconstruction.

Dans SQL Server 2014, les statistiques ne sont pas créées en analysant toutes les lignes de la table lorsqu'un index partitionné est créé ou reconstruit. Au lieu de cela, l'optimiseur de requête utilise l'algorithme d'échantillonnage par défaut pour générer des statistiques. Pour obtenir des statistiques sur les index partitionnés en analysant toutes les lignes de la table, utilisez CREATE STATISTICS ou UPDATE STATISTICS avec la clause FULLSCAN.

Dans les versions précédentes de SQL Server, vous aviez parfois la possibilité de reconstruire un index non cluster afin de corriger les incohérences dues à des défaillances matérielles. Dans SQL Server 2008 et les versions ultérieures, vous pouvez toujours réparer de telles incohérences entre l'index et l'index cluster en reconstruisant un index non cluster hors connexion. Toutefois, vous ne pouvez pas réparer les incohérences d'un index non cluster en reconstruisant l'index en ligne. En effet, le mécanisme de reconstruction en ligne utilise l'index non cluster existant comme base pour la reconstruction et propage de ce fait l'incohérence. Par contre, la reconstruction de l'index hors connexion impose une analyse de l'index cluster (ou segments de mémoire) et élimine donc l'incohérence. Comme pour les versions précédentes, nous vous recommandons d'éliminer les incohérences en restaurant les données concernées à partir d'une sauvegarde. Toutefois, il est possible que vous puissiez réparer les incohérences d'un index en reconstruisant l'index non cluster hors connexion. Pour plus d'informations, consultez DBCC CHECKDB (Transact-SQL).

Pour reconstruire un index cluster columnstore, SQL Server :

  1. Acquiert un verrou exclusif sur la table ou la partition lorsque la reconstruction se produit. Les données sont hors connexion et indisponibles pendant la reconstruction.

  2. Défragmente le columnstore en supprimant physiquement les lignes qui ont été logiquement supprimées de la table ; les octets supprimés sont récupérés sur le support physique.

  3. Lit toutes les données de l'index columnstore d'origine, y compris le deltastore. Associe les données dans de nouveaux rowgroups, et compresse les rowgroups dans le columnstore.

  4. Nécessite de l'espace sur le support physiques pour stocker deux copies de l'index columnstore pendant que la reconstruction est en cours. Lorsque la reconstruction est terminée, SQL Server supprime l'index columnstore cluster d'origine.

Réorganisation d'index

La réorganisation d'un index utilise des ressources système minimes. En effet, elle défragmente le niveau feuille des index cluster et non cluster sur les tables et les vues en retriant les pages de niveau feuille de façon physique afin de resuivre l'ordre logique, c'est-à-dire de gauche à droite, des nœuds. Cette opération compacte également les pages d'index. Le compactage s'appuie sur la valeur du facteur de remplissage existante. Pour afficher le paramètre du facteur de remplissage, utilisez sys.indexes.

Si ALL est précisé, les index relationnels, aussi bien cluster que non cluster, et les index XML sur la table sont réorganisés. Des restrictions s'appliquent néanmoins si vous utilisez l'option ALL ; consultez sa définition dans la section Arguments.

Pour réorganiser un index columnstore cluster, SQL Server déplace tous les rowgroups marqués comme étant CLOSED dans le columnstore. La réorganisation n'est pas requise pour déplacer les rowgroups CLOSED dans le columnstore. Le processus de déplacement de tuple recherche tous les rowgroups CLOSED et les déplace. Toutefois, le processus de déplacement de tuple est monothread et peut ne pas déplacer les rowgroups suffisamment rapidement pour votre charge de travail. Pour garantir que les rowgroups sont déplacés lorsqu'ils sont fermés, exécutez ALTER INDEX REORGANIZE après chaque charge utile.

Pour plus d'informations, consultez Réorganiser et reconstruire des index.

Désactivation d'index

Désactiver un index permet d'éviter l'accès à l'index, et dans le cas d'index cluster, aux données de la table sous-jacente par les utilisateurs. La définition de l'index est conservée dans le catalogue système. Désactiver un index, qu'il soit non cluster ou cluster, sur une vue supprime physiquement les données de l'index. Désactiver un index cluster permet d'éviter l'accès aux données mais celles-ci ne sont plus mises à jour dans l'arborescence binaire (appelé également arbre B) jusqu'à ce que l'index soit supprimé ou reconstruit. Pour afficher l'état d'un index, qu'il soit activé ou désactivé, lancez une requête sur la colonne is_disabled dans l'affichage catalogue sys.indexes.

Si une table est dans une publication de réplication transactionnelle, vous ne pouvez pas désactiver les index qui sont associés à des colonnes clés primaire. Ces index sont requis par la réplication. Pour désactiver un index, vous devez d'abord supprimer la table de la réplication. Pour plus d'informations, consultez Publier des données et des objets de base de données.

Pour activer l'index, utilisez l'instruction ALTER INDEX REBUILD ou CREATE INDEX WITH DROP_EXISTING. La reconstruction d'un index cluster désactivé ne peut être effectuée si l'option ONLINE est activée (ON). Pour plus d'informations, consultez Désactiver les index et contraintes.

Configuration des options

Vous pouvez définir les options ALLOW_ROW_LOCKS, ALLOW_PAGE_LOCKS, IGNORE_DUP_KEY et STATISTICS_NORECOMPUTE pour un index précis sans pour autant avoir à le reconstruire ou le réorganiser. Les valeurs modifiées sont immédiatement appliquées à l'index. Pour afficher ces paramètres, utilisez sys.indexes. Pour plus d'informations, consultez Définir les options d'index.

Options de verrous de ligne et de page

Si ALLOW_ROW_LOCKS = ON et ALLOW_PAGE_LOCK = ON, les verrous de ligne, de page et de table sont autorisés lorsque vous accédez à l'index. Le Moteur de base de données choisit le verrou approprié et peut promouvoir un verrou de ligne ou de page en verrou de table.

Si ALLOW_ROW_LOCKS = OFF et ALLOW_PAGE_LOCK = OFF, seul un verrou au niveau des tables est autorisé si vous accédez à l'index.

Si ALL est indiqué lors de la définition des options de verrouillage de ligne ou de page, les paramètres s'appliquent à tous les index. Si la table sous-jacente correspond à un segment de mémoire, les paramètres s'appliquent des façons suivantes :

ALLOW_ROW_LOCKS = ON ou OFF

S'applique au segment de mémoire et à tout index non cluster qui lui est associé.

ALLOW_PAGE_LOCKS = ON

S'applique au segment de mémoire et à tout index non cluster qui lui est associé.

ALLOW_PAGE_LOCKS = OFF

Verrou entier pour les index non cluster. En d'autres termes, tous les verrous de page ne sont pas autorisés sur les index non cluster. En ce qui concerne le segment de mémoire, seul les verrous partagé (P), de mise à jour (M) et exclusifs (E) ne sont pas autorisés. Le Moteur de base de données peut toujours acquérir un verrou de page intentionnel (IS, IU ou IX) à des fins internes.

Opérations en ligne sur l'index

Si vous reconstruisez un index et que l'option ONLINE est activée (ON), les objets, les tables et les index associés sous-jacents sont disponibles pour permettre les requêtes et la modification de données. Vous pouvez également reconstruire en ligne une partie d'un index résidant sur une partition unique. Les verrous de tables exclusifs ne sont maintenus que pour une durée courte lors du processus de modification.

La réorganisation d'un index s'effectue toujours en ligne. Elle ne conserve pas les verrous à long terme et ne bloque pas ainsi les requêtes ou les mises à jour en cours d'exécution.

Vous pouvez lancer des opérations d'index en ligne simultanées sur une même table ou partition de table, mais uniquement dans les cas suivants :

  • Création de plusieurs index non cluster.

  • réorganisation de différents index sur une même table ;

  • réorganisation de différents index lors de la reconstruction d'index ne se chevauchant pas et portant sur une même table.

Toutes les autres opérations en ligne sur les index exécutées en même temps échouent. Par exemple, vous ne pouvez pas reconstruire de façon concurrente plusieurs index portant sur une même table ou créer d'index lors de la reconstruction d'un index existant portant sur la même table.

Pour plus d'informations, consultez Exécuter des opérations en ligne sur les index.

WAIT_AT_LOW_PRIORITY

Pour exécuter l'instruction DDL pour une reconstruction d'index en ligne, toutes les transactions bloquantes actives qui s'exécutent sur une table particulière doivent être terminées. Lorsque la reconstruction d'index en ligne s'exécute, elle bloque toutes les nouvelles transactions qui sont prêtes à s'exécuter sur cette table. Bien que la durée du verrou pour la reconstruction de l'index en ligne soit très courte, le fait d'attendre que toutes les transactions ouvertes sur une table spécifique soient exécutées, et le fait de bloquer les nouvelles transactions qui doivent démarrer, peuvent avoir un impact important sur le débit et provoquer un ralentissement ou un délai d'attente des charges de travail, limitant considérablement l'accès à la table sous-jacente. L'option WAIT_AT_LOW_PRIORITY permet aux administrateurs de base de données de gérer les verrous S et Sch-M requis pour les reconstructions d'index en ligne, et permet de sélectionner une des 3 options. Dans les 3 cas, si pendant le temps d'attente ((MAX_DURATION = n [minutes])) il n'y a aucune activité bloquante, la reconstruction de l'index en ligne est exécutée immédiatement, sans attendre, et l'instruction DDL est terminée.

Restrictions des index spatiaux

Lorsque vous reconstruisez un index spatial, la table utilisateur sous-jacente est indisponible pour toute la durée de l'opération d'index car l'index spatial détient un verrou de schéma.

La contrainte PRIMARY KEY dans la table utilisateur ne peut pas être modifiée alors qu'un index spatial est défini sur une colonne de cette table. Pour modifier la contrainte PRIMARY KEY, commencez par supprimer chaque index spatial de la table. Après avoir modifié la contrainte PRIMARY KEY, vous pouvez recréer chaque index spatial.

Dans une opération individuelle de reconstruction de partition, vous ne pouvez pas spécifier d'index spatial. Toutefois, vous pouvez spécifier des index spatiaux dans une reconstruction de partition complète.

Pour modifier des options spécifiques à un index spatial, telles que BOUNDING_BOX ou GRID, vous pouvez utiliser une instruction CREATE SPATIAL INDEX qui spécifie DROP_EXISTING = ON ou supprimer l'index spatial et en créer un nouveau. Pour obtenir un exemple, consultez CREATE SPATIAL INDEX (Transact-SQL).

Compression de données

Pour plus d'informations sur la compression de données, consultez Compression de données.

Pour évaluer la façon dont la modification de compression PAGE et ROW affectera une table, un index ou une partition, utilisez la procédure stockée sp_estimate_data_compression_savings.

Les restrictions suivantes s'appliquent aux index partitionnés :

  • Lorsque vous utilisez ALTER INDEX ALL ...,, vous ne pouvez pas modifier le paramètre de compression d'une partition unique si la table a des index non alignés.

  • La syntaxe ALTER INDEX <index> ... REBUILD PARTITION ... reconstruit la partition spécifiée de l'index.

  • La syntaxe ALTER INDEX <index> ... REBUILD WITH ... reconstruit toutes les partitions de l'index.

Statistiques

Lorsque vous exécutez ALTER INDEX ALL … sur une table, seules les statistiques associées aux index sont mises à jour. Les statistiques automatiques ou manuelles créées sur la table (au lieu d'un index) ne sont pas mises à jour.

Pour pouvoir exécuter l'instruction ALTER INDEX, vous devez obligatoirement bénéficier au minimum d'autorisations nécessaires pour exécuter les instructions ALTER sur la table ou la vue.

A.Reconstruction d'un index

L'exemple suivant reconstruit un seul index portant sur la table Employee de la base de données AdventureWorks2012.

ALTER INDEX PK_Employee_EmployeeID ON HumanResources.Employee
REBUILD;

B.Reconstruction de tous les index d'une table et indication des options

L'exemple suivant indique le mot clé ALL. Il reconstruit tous les index associés à la table Production.Product dans la base de données AdventureWorks2012. Trois options sont spécifiées.

S'applique à : SQL Server 2008 jusqu'à SQL Server 2014.

ALTER INDEX ALL ON Production.Product
REBUILD WITH (FILLFACTOR = 80, SORT_IN_TEMPDB = ON,
              STATISTICS_NORECOMPUTE = ON);

L'exemple suivant ajoute l'option ONLINE incluant l'option de verrou de faible priorité, et ajoute l'option de compression de ligne.

S'applique à : SQL Server 2014 jusqu'à SQL Server 2014.

ALTER INDEX ALL ON Production.Product
REBUILD WITH 
(
    FILLFACTOR = 80, 
    SORT_IN_TEMPDB = ON,
    STATISTICS_NORECOMPUTE = ON,
    ONLINE = ON ( WAIT_AT_LOW_PRIORITY ( MAX_DURATION = 4 MINUTES, ABORT_AFTER_WAIT = BLOCKERS ) ), 
    DATA_COMPRESSION = ROW
)
;

C.Reconstruction d'un index cluster columnstore

Cette première étape prépare une table FactInternetSales2 avec un index columnstore cluster et insère les quatre premières colonnes.

USE AdventureWorksDW2012;
GO
CREATE TABLE dbo.FactInternetSales2 (
    ProductKey [int] NOT NULL, 
    OrderDateKey [int] NOT NULL, 
    DueDateKey [int] NOT NULL, 
    ShipDateKey [int] NOT NULL);

CREATE CLUSTERED COLUMNSTORE INDEX cci_FactInternetSales2
ON dbo.FactInternetSales2;

INSERT INTO dbo.FactInternetSales2
SELECT ProductKey, OrderDateKey, DueDateKey, ShipDateKey
FROM dbo.FactInternetSales;

SELECT * FROM sys.column_store_row_groups;

Un rowgroup OPEN est obtenu, ce qui signifie que SQL Server attend que d'autres lignes soient ajoutées avant de fermer le rowgroup et déplacer les données vers le columnstore. L'instruction suivante reconstruit l'index columnstore cluster.

ALTER INDEX cci_FactInternetSales2 ON FactInternetSales2 REBUILD;
SELECT * FROM sys.column_store_row_groups;

Le résultat de l'instruction SELECT indique que le rowgroup est COMPRESSED, ce qui signifie que les segments de colonne du rowgroup sont compressés et stockés dans l'index columnstore.

D.Réorganisation d'un index avec compactage LOB

L'exemple suivant réorganise un seul index cluster dans la base de données AdventureWorks2012. L'index contenant un type de données LOB au niveau de la feuille, l'instruction compacte par la même occasion toutes les pages contenant les données LOB. Notez que l'indication de l'option WITH (LOB_COMPACTION) n'est pas nécessaire car la valeur par défaut est ON.

ALTER INDEX PK_ProductPhoto_ProductPhotoID ON Production.ProductPhoto
REORGANIZE ;

E.Définition des options d'un index

L'exemple suivant définit plusieurs options sur l'index AK_SalesOrderHeader_SalesOrderNumber dans la base de données AdventureWorks2012.

S'applique à : SQL Server 2008 jusqu'à SQL Server 2014.

ALTER INDEX AK_SalesOrderHeader_SalesOrderNumber ON
    Sales.SalesOrderHeader
SET (
    STATISTICS_NORECOMPUTE = ON,
    IGNORE_DUP_KEY = ON,
    ALLOW_PAGE_LOCKS = ON
    ) ;
GO

F.Désactivation d'un index

L'exemple suivant désactive un index non cluster sur la table Employee dans la base de données AdventureWorks2012.

ALTER INDEX IX_Employee_ManagerID ON HumanResources.Employee
DISABLE ;

G.Désactivation des contraintes

L'exemple suivant désactive une contrainte PRIMARY KEY en désactivant l'index PRIMARY KEY dans la base de données AdventureWorks2012. La contrainte FOREIGN KEY portant sur la table sous-jacente est automatiquement désactivée et un avertissement s'affiche.

ALTER INDEX PK_Department_DepartmentID ON HumanResources.Department
DISABLE ;

Le jeu de résultats retourne l'avertissement suivant.

Warning: Foreign key 'FK_EmployeeDepartmentHistory_Department_DepartmentID'

on table 'EmployeeDepartmentHistory' referencing table 'Department'

was disabled as a result of disabling the index 'PK_Department_DepartmentID'.

H.Activation des contraintes

L'exemple suivant active les contraintes PRIMARY KEY et FOREIGN KEY désactivées dans l'exemple F.

La contrainte PRIMARY KEY est activée lors de la reconstruction de l'index PRIMARY KEY.

ALTER INDEX PK_Department_DepartmentID ON HumanResources.Department
REBUILD ;

La contrainte FOREIGN KEY est ensuite activée.

ALTER TABLE HumanResources.EmployeeDepartmentHistory
CHECK CONSTRAINT FK_EmployeeDepartmentHistory_Department_DepartmentID;
GO

I.Reconstruction d'un index partitionné

L'exemple suivant reconstruit une seule partition, celle portant le numéro de partition 5, de l'index partitionné IX_TransactionHistory_TransactionDate dans la base de données AdventureWorks2012. La partition 5 est reconstruite en ligne et le délai d'attente de 10 minutes pour le verrou de priorité basse s'applique séparément à chaque verrou acquis par l'opération de reconstruction d'index. Si pendant ce temps, le verrou ne peut pas être obtenu pour terminer la reconstruction de l'index complet, l'instruction de l'opération de reconstruction est interrompue.

S'applique à : SQL Server 2014 jusqu'à SQL Server 2014.

-- Verify the partitioned indexes.
SELECT *
FROM sys.dm_db_index_physical_stats (DB_ID(),OBJECT_ID(N'Production.TransactionHistory'), NULL , NULL, NULL);
GO
--Rebuild only partition 5.
ALTER INDEX IX_TransactionHistory_TransactionDate
ON Production.TransactionHistory
REBUILD Partition = 5 
   WITH ( ONLINE = ON ( WAIT_AT_LOW_PRIORITY (MAX_DURATION = 10 minutes, ABORT_AFTER_WAIT = SELF )))
;
GO

J.Modification du paramètre de compression d'un index

L'exemple suivant reconstruit un index sur une table rowstore non partitionnée.

S'applique à : SQL Server 2008 jusqu'à SQL Server 2014.

ALTER INDEX IX_INDEX1 
ON T1
REBUILD 
WITH ( DATA_COMPRESSION = PAGE );
GO

L'exemple suivant reconstruit un index columnstore cluster pour utiliser la compression d'archivage, puis montre comment supprimer la compression d'archivage. Le résultat final utilise uniquement la compression columnstore.

S'applique à : SQL Server 2014 jusqu'à SQL Server 2014.

--Prepare the example by creating a table with a clustered columnstore index.
CREATE TABLE SimpleTable (
    ProductKey [int] NOT NULL, 
    OrderDateKey [int] NOT NULL, 
    DueDateKey [int] NOT NULL, 
    ShipDateKey [int] NOT NULL
);

CREATE CLUSTERED INDEX cci_SimpleTable ON SimpleTable (ProductKey);

CREATE CLUSTERED COLUMNSTORE INDEX cci_SimpleTable
ON SimpleTable
WITH ( DROP_EXISTING = ON );

--Compress the table further by using archival compression.
ALTER INDEX cci_SimpleTable ON SimpleTable
REBUILD
WITH ( DATA_COMPRESSION = COLUMNSTORE_ARCHIVE );

--Remove the archive compression and only use columnstore compression.
ALTER INDEX cci_SimpleTable ON SimpleTable
REBUILD
WITH ( DATA_COMPRESSION = COLUMNSTORE );
GO

Pour obtenir d'autres exemples de compression de données, consultez Compression de données.

Ajouts de la communauté

AJOUTER
Afficher:
© 2015 Microsoft