sys.sysindexes (Transact-SQL)

Contient une ligne pour chaque index et chaque table de la base de données active. Cette vue ne prend pas en charge les index XML. Les index et les tables partitionnés ne sont pas totalement pris en charge dans cette vue ; utilisez plutôt l'affichage catalogue sys.indexes.

Important

Cette table système SQL Server 2000 est incluse sous la forme d'une vue pour la compatibilité descendante. Nous vous recommandons d'utiliser les vues système SQL Server actuelle. Pour trouver les vues système équivalentes, consultez Mappage des tables système SQL Server 2000 avec les vues système SQL Server 2005. Cette fonctionnalité sera supprimée dans une prochaine version de Microsoft SQL Server. Évitez d'utiliser cette fonctionnalité dans de nouveaux travaux de développement et prévoyez de modifier les applications qui utilisent actuellement cette fonctionnalité.

Nom de la colonne

Type de données

Description

id

int

Identificateur de la table à laquelle l'index appartient.

status

int

Informations sur l'état du système.

Identifié à titre d'information uniquement. Non pris en charge. La compatibilité future n'est pas garantie.

first

binary(6)

Pointeur vers la première page ou la page racine.

Inutilisé lorsque indid = 0.

NULL = L'index est partitionné lorsque indid > 1.

NULL = La table est partitionnée lorsque indid est égal à 0 ou à 1.

indid

smallint

Identificateur de l'index :

0 = Segment de mémoire

1 = Index cluster

>1 = Index non-cluster

root

binary(6)

Pour indid >= 1, root est le pointeur vers la page racine.

Inutilisé lorsque indid = 0.

NULL = L'index est partitionné quand indid > 1.

NULL = La table est partitionnée quand indid est égal à 0 ou à 1.

minlen

smallint

Taille minimale d'une ligne.

keycnt

smallint

Nombre de clés.

groupid

smallint

Identificateur du groupe de fichiers sur lequel l'objet a été créé.

NULL = L'index est partitionné quand indid > 1.

NULL = La table est partitionnée quand indid est égal à 0 ou à 1.

dpages

int

Pour indid = 0 ou indid = 1, dpages est le nombre de pages de données utilisées.

Pour indid > 1, dpages est le nombre de pages d'index utilisées.

0 = L'index est partitionné lorsque indid > 1.

0 = La table est partitionnée lorsque indid est égal à 0 ou à 1.

Ne fournit pas de résultats précis en cas de dépassement de capacité des données sur des lignes.

reserved

int

Pour indid = 0 ou indid = 1, reserved est le nombre de pages allouées à tous les index et toutes les données de la table.

Pour indid > 1, reserved est le nombre de pages allouées à l'index.

0 = L'index est partitionné lorsque indid > 1.

0 = La table est partitionnée lorsque indid est égal à 0 ou à 1.

Ne fournit pas de résultats précis en cas de dépassement de capacité des données sur des lignes.

used

int

Pour indid = 0 ou indid = 1, used est le nombre total de pages utilisées pour tous les index et toutes les données de la table.

Pour indid > 1, used est le nombre de pages utilisées pour l'index.

0 = L'index est partitionné lorsque indid > 1.

0 = La table est partitionnée lorsque indid est égal à 0 ou à 1.

Ne fournit pas de résultats précis en cas de dépassement de capacité des données sur des lignes.

rowcnt

bigint

Nombre de lignes de niveau données dépendant de la valeur indid = 0 et indid = 1.

0 = L'index est partitionné lorsque indid > 1.

0 = La table est partitionnée lorsque indid est égal à 0 ou à 1.

rowmodctr

int

Compte le nombre total de lignes insérées, supprimées ou mises à jour depuis la dernière mise à jour des statistiques de la table.

0 = L'index est partitionné lorsque indid > 1.

0 = La table est partitionnée lorsque indid est égal à 0 ou à 1.

Dans SQL Server 2005 et versions ultérieures, rowmodctr n'est pas totalement compatible avec les versions antérieures. Pour plus d'informations, consultez la section « Remarques ».

xmaxlen

smallint

Taille maximale d'une ligne

maxirow

smallint

Taille maximale d'une ligne d'index non-feuille.

Dans SQL Server 2005 et versions ultérieures, maxirow n'est pas totalement compatible avec les versions antérieures.

OrigFillFactor

tinyint

Valeur d'origine du taux de remplissage utilisé lors de la création de l'index. Cette valeur n'est pas conservée ; elle peut toutefois s'avérer utile si vous devez recréer un index et si vous avez oublié le taux de remplissage utilisé.

StatVersion

tinyint

Retourne 0.

Identifié à titre d'information uniquement. Non pris en charge. La compatibilité future n'est pas garantie.

reserved2

int

Retourne 0.

Identifié à titre d'information uniquement. Non pris en charge. La compatibilité future n'est pas garantie.

FirstIAM

binary(6)

NULL = L'index est partitionné.

Identifié à titre d'information uniquement. Non pris en charge. La compatibilité future n'est pas garantie.

impid

smallint

Indicateur d'implémentation de l'index.

Retourne 0.

Identifié à titre d'information uniquement. Non pris en charge. La compatibilité future n'est pas garantie.

lockflags

smallint

Utilisé pour limiter les granularités de verrouillage d'un index. Par exemple, une table de recherche qui est essentiellement accessible en lecture seule peut être configurée pour poser uniquement des verrous de niveau table, de façon à minimiser les coûts de verrouillage.

pgmodctr

int

Retourne 0.

Identifié à titre d'information uniquement. Non pris en charge. La compatibilité future n'est pas garantie.

keys

varbinary(816)

Liste des identificateurs de colonne pour les colonnes qui constituent la clé d'index.

Renvoie NULL.

Pour afficher les colonnes des clés d'index, utilisez sys.sysindexkeys.

nom

sysname

Nom de l'index ou de la statistique. Renvoie NULL quand indid = 0. Modifiez votre application pour rechercher le nom d'un segment de mémoire de valeur NULL.

statblob

image

Statistiques sur les objets binaires volumineux (BLOB).

Renvoie NULL.

maxlen

int

Identifié à titre d'information uniquement. Non pris en charge. La compatibilité future n'est pas garantie.

rang

int

Nombre de lignes de niveau données dépendant de la valeur indid = 0 et indid = 1. La valeur est reproduite pour indid >1.

Notes

Les colonnes définies comme réservées ne doivent pas être utilisées.

Dans les versions antérieures de SQL Server, chaque table qui comportait au moins une colonne text, ntext ou image comportait également une ligne dans sysindexes avec indid = 255. Cet ID d'index n'existe plus. Lorsqu'une table ou un objet comporte un ou plusieurs types de données LOB (objets volumineux), une unité d'allocation LOB_DATA par partition est allouée pour gérer le stockage de ces données. Pour plus d'informations, consultez Organisation des tables et des index.

Les colonnes dpages, reserved et used ne renvoient pas des résultats précis si la table ou l'index contient des données dans l'unité d'allocation ROW_OVERFLOW. De plus, les nombres de pages de chaque index sont suivis séparément et ne sont pas agrégés pour la table de base. Pour afficher les nombres de pages, utilisez les affichages catalogue sys.allocation_units ou sys.partitions, ou la vue de gestion dynamique sys.dm_db_partition_stats.

Dans les versions antérieures de SQL Server, le Moteur de base de données conservait les compteurs de modifications de niveau ligne. De tels compteurs sont maintenant gérés au niveau colonne. Par conséquent, la colonne rowmodctr est calculée et fournit des résultats similaires à ceux des versions antérieures, mais qui ne sont pas exacts.

Si vous utilisez la valeur de rowmodctr pour déterminer à quel moment mettre à jour les statistiques, envisagez les solutions suivantes :

  • Ne rien faire. La nouvelle valeur rowmodctr vous aide souvent à déterminer à quel moment mettre à jour les statistiques, le comportement étant raisonnablement proche des résultats des versions antérieures.

  • Utiliser AUTO_UPDATE_STATISTICS. Pour plus d'informations, consultez Utilisation des statistiques pour améliorer les performances des requêtes.

  • Utiliser une limite de temps pour déterminer à quel moment mettre à jour les statistiques. (par exemple, toutes les heures, chaque jour ou chaque semaine).

  • Utiliser les informations de niveau application pour déterminer à quel moment mettre à jour les statistiques. Par exemple, chaque fois que la valeur maximale d'une colonne identity varie de plus de 10 000 ou chaque fois qu'une opération d'insertion en bloc est effectuée.