9
votes

Pourquoi la table Sys.indexes a-t-elle un nom d'index NULL?

J'ai couru cette requête: xxx

et le plus grand indice renvoyé avait un nom nul. Qu'est-ce que cela signifie?


0 commentaires

3 Réponses :


13
votes

de sys.indexes :

nom de l'index ...
Null = tas

donc ce sont des tas.


0 commentaires

6
votes

La vue Sys.indexes indique non seulement des index, mais également des tables qui ne disposent pas d'index sur eux. Ces tables sont appelées tas. Dans ce cas, il n'y a pas de nom de l'indice. Cela peut être trompeur, je suis d'accord. xxx

Fondamentalement si la requête que vous avez posté renvoie Nom d'index NULL, cela signifie qu'il n'y a pas d'index clustered sur votre table dbo.stu.

Je recommanderais de créer un index en cluster sur la table.


1 commentaires

Nice Query @piotr, avez-vous un pour SQL2000?



3
votes

Ajout Imortant aux réponses ci-dessus: Nom d'index dans le catalogue SYS.Indexes La vue Catalogue peut être null dans deux cas:

1) Comme spécifié dans MSDN, s'il s'agit en réalité d'un tas, c'est-à-dire aucun index en cluster. Pour chaque table Nunclustered, il y a un tel enregistrement dans la vue Sys.indexes (même si la table a d'autres index non clusters).

2) S'il s'agit d'une statistique (MSDN conserve étonnamment le silence à ce sujet!). Au moins, j'ai observé une telle condition sur l'une de mes bases de données sous SQL 2008 R2 Server.


1 commentaires

P.s. J'ai vérifié sur une autre base de données et sa vue SyS.indexes contient uniquement des noms d'index de NULL uniquement pour les enregistrements de démarrage. Les statistiques ne sont pas présentes dans cette vue du tout. Étrange. Probablement que ces premiers dB ayant des questions de métadonnées ou quelque chose comme ça ...