Partager via


index_option (Transact-SQL)

Spécifie un ensemble d'options applicables à un index qui fait partie d'une définition de contrainte créée à l'aide de ALTER TABLE.

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

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

Syntaxe

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

<range> ::= 
<partition_number_expression> TO <partition_number_expression>

<single_partition_rebuild__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 }
}

<low_priority_lock_wait>::=
{
    WAIT_AT_LOW_PRIORITY ( MAX_DURATION = <time> [ MINUTES ] , 
                           ABORT_AFTER_WAIT = { NONE | SELF | BLOCKERS } ) 
}

Argument

  • PAD_INDEX = { ON | OFF }

    S'applique à : SQL Server 2008 et 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.

    • OFF ou fillfactor n'est pas spécifié
      Les pages de niveau intermédiaire sont remplies jusqu'à la presque totalité de la capacité, laissant suffisamment d'espace pour au moins une ligne de la taille maximale possible de l'index, compte tenu du jeu de clés des pages intermédiaires.

  • FILLFACTOR **=**fillfactor

    S'applique à : SQL Server 2008 et 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. La valeur spécifiée doit être un entier compris entre 1 et 100. La valeur par défaut est 0.

    Notes

    Les facteurs de remplissage de valeur 0 et 100 sont en tout point identiques.

  • 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é 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. Cette option n'a aucun effet lors de l'exécution de CREATE INDEX, ALTER INDEX ou de UPDATE. 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 }
    Indique si les statistiques 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.

  • ALLOW_ROW_LOCKS = { ON | OFF }

    S'applique à : SQL Server 2008 et 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 et 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.

  • SORT_IN_TEMPDB = { ON | OFF }

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

    Indique si les résultats de 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. Ceci peut accélérer la création d'un index si tempdb ne se trouve pas sur le même groupe de disques que la base de données utilisateur. 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.

  • ONLINE = { ON | OFF }

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

    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. REBUILD peut être effectué en tant qu'opération ONLINE.

    Notes

    Les index uniques non cluster ne peuvent pas être créés en ligne.Il s'agit des index qui sont créés en raison d'une contrainte UNIQUE ou PRIMARY KEY.

    • 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. Ceci permet d'exécuter les requêtes ou les mises à jour dans la table sous-jacente et ses index. Au début de l'opération, un verrou partagé (S, Shared) est placé sur l'objet source pendant une période de temps très courte. À la fin de l'opération, pendant une période de temps très courte, un verrou partagé (S, Shared) est placé sur la source si un index non cluster est créé, ou bien un verrou de SCH-M (Modification du schéma) est placé lorsqu'un index cluster est créé ou supprimé en ligne et lorsqu'un index cluster ou non cluster est régénéré. Bien que les verrous d'index en ligne soient des verrous de métadonnées courtes, le verrou Sch-M doit notamment attendre que toutes les transactions bloquantes soient terminées sur cette table. 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. ONLINE ne peut pas prendre la valeur ON si un index est en cours de création sur une table locale temporaire.

      Notes

      La reconstruction d'index en ligne peut définir les options low_priority_lock_wait décrites plus loin dans cette section.low_priority_lock_wait gère la priorité du verrou S ou Sch-M pendant la reconstruction de l'index en ligne.

    • 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. Une opération d'indexation hors ligne qui crée, régénère ou supprime un index cluster, ou régénère ou supprime un index non-cluster, acquiert un verrou de modification de schéma (Sch-M) sur la table. Ceci 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.

    Notes

    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.

  • MAXDOP **=**max_degree_of_parallelism

    S'applique à : SQL Server 2008 et 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 64.

    Valeurs possibles de max_degree_of_parallelism :

    • 1
      Supprime la génération de plan parallèle.

    • >1
      Limite au nombre spécifié le nombre maximal de processeurs utilisés dans une opération d'index en parallèle.

    • 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.

    Notes

    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 et SQL Server 2014.

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

    • NONE
      La table ou les partitions spécifiées ne sont pas compressées. S'applique uniquement aux tables rowstore ; ne s'applique pas aux tables columnstore.

    • ROW
      La table ou les partitions spécifiées sont compressés au moyen de la compression de ligne. S'applique uniquement aux tables rowstore ; ne s'applique pas aux tables columnstore.

    • PAGE
      La table ou les partitions spécifiées sont compressés au moyen de la compression de page. S'applique uniquement aux tables rowstore ; ne s'applique pas aux tables columnstore.

    • COLUMNSTORE

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

      S'applique uniquement aux tables columnstore. COLUMNSTORE spécifie qu'il faut décompresser une partition compressée à 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 toutes les tables columnstore.

    • COLUMNSTORE_ARCHIVE

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

      S'applique uniquement aux tables columnstore, qui sont des tables stockées avec un index cluster columnstore. 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 ( { <expression_numéro_partition> | <plage> } [ ,...n ] )

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

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

    <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, par exemple 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 :

    --For rowstore tables
    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)
    )
    
    --For columnstore tables
    REBUILD WITH 
    (
    DATA_COMPRESSION = COLUMNSTORE ON PARTITIONS (1, 3, 5), 
    DATA_COMPRESSION = COLUMNSTORE_ARCHIVE ON PARTITIONS (2, 4, 6 TO 8)
    )
    
  • <single_partition_rebuild__option>
    Dans la plupart des cas, la reconstruction d'un index reconstruit toutes les partitions d'un index partitionné. Les options suivantes, lorsqu'elles sont appliquées à une partition unique, ne reconstruisent pas toutes les partitions.

    • SORT_IN_TEMPDB

    • MAXDOP

    • DATA_COMPRESSION

  • low_priority_lock_wait

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

    Un SWITCH ou une reconstruction d'index en ligne se termine dès qu'il n'y a aucune opération bloquante pour cette table. WAIT_AT_LOW_PRIORITY indique que si l'opération SWITCH ou l'opération en ligne de reconstruction d'index ne peut pas être fermée immédiatement, elle attendra. L'opération contiendra des verrous de faible priorité, ce qui permettra à d'autres opérations qui contiennent des verrous en conflit avec les instructions DDL de continuer. Omettre l'option WAIT INSTRUCTION WITH OVERRIDE BASSE équivaut à WAIT_AT_LOW_PRIORITY ( MAX_DURATION = 0 minutes, ABORT_AFTER_WAIT = NONE).

  • MAX_DURATION = time [MINUTES ]
    Temps d'attente (valeur entière spécifiée en minutes) que le SWITCH ou le verrou de reconstruction d'index en ligne qui doit être pris attendra lors de l'exécution de la commande DDL. Le SWITCH ou l'opération de reconstruction de l'index en ligne tente de terminer immédiatement. Si l'opération est bloquée pendant le temps 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.

  • ABOUT_AFTER_WAIT = [NONE | SELF | BLOCKERS } ]

    • NONE
      Continue le SWITCH ou l'opération de reconstruction de l'index en ligne sans modifier la priorité de verrou (avec une priorité normale).

    • SELF
      Quitte le SWITCH ou l'opération DDL de reconstruction de l'index en ligne actuellement exécutée sans effectuer aucune action.

    • BLOCKERS
      Annule toutes les transactions utilisateur qui bloquent actuellement le SWITCH ou l'opération DDL de reconstruction de l'index en ligne afin que l'opération puisse continuer.

      Requiert l'autorisation ALTER ANY CONNECTION.

Notes

Pour une description complète des options d'index, consultez CREATE INDEX (Transact-SQL).

Voir aussi

Référence

ALTER TABLE (Transact-SQL)

column_constraint (Transact-SQL)

computed_column_definition (Transact-SQL)

table_constraint (Transact-SQL)