Dans un certain tutoriel, j'ai lu que l'auteur filtre en sys.indexes
fonction du prédicat index_id < 256000
. Qu'est-ce que cela accomplit?
11
Dans un certain tutoriel, j'ai lu que l'auteur filtre en sys.indexes
fonction du prédicat index_id < 256000
. Qu'est-ce que cela accomplit?
sys.sysindexkeys
sys.selective_xml_index_paths
,sys.xml_indexes
,sys.sysindexes
mais je suppose que ce sera tout simplement mis à jour si le se chiffre magique n'est plus valide.Réponses:
Ceci est basé sur l'idée fausse selon laquelle les index XML sont actuellement le seul type qui pourrait avoir un schéma d'identification qui est> = 256000 (au moins en fonction de leur observation; ce schéma n'est pas documenté AFAIK, donc pas même sûr s'il est intentionnel). Probablement bien dans les versions actuelles, mais qui sait quel type d'index sera ajouté ensuite et où commencera son schéma d'identification? Si vous souhaitez exclure les index XML, vous excluez désormais également autre chose. Les index spatiaux, par exemple, semblent commencer à id = 384000. Si la requête ci-dessus a l'intention d'inclure des index spatiaux mais pas des index XML, ils vont être surpris.
Un filtre bien meilleur serait:
... ou mieux encore, car il est auto-documenté ...
Et maintenant, lorsque vous souhaitez également exclure, par exemple, les index spatiaux, votre requête se transforme en ...
... au lieu d'avoir à déterminer quelle plage numérique les valeurs id pour les index spatiaux pourraient occuper (ou non). Bonne chance avec ça.
Ceux-ci sont assez clairement documentés dans sys.indexes (Transact-SQL) . Je ne vois aucune référence à ce nombre magique et je vous recommande fortement de diriger votre auteur de didacticiel ici afin qu'ils puissent voir que ce nombre magique n'est pas quelque chose sur lequel ils devraient s'appuyer (sans parler d'apprendre aux autres à se fier).
la source
index_id
. D'autant plus que des données plus précises pour déterminer le type se trouvent juste à côté ... littéralement.Selon le livre "Microsoft SQL Server 2012 Internals" de Kalen Delaney, Craig Freeman, l'index_id de l'index XML commence à numéroter avec 256000. Donc, pour obtenir tous les types d'index d'informations (interrogation de sys.indexes) mais en ignorant les index XML, vous pouvez placer un filtre comme celui-ci.
Le même jeu de résultats peut être obtenu en plaçant un filtre sur la colonne type de sys.indexes. Pour le type d'index XML, tapez = 3.
ou
La colonne type_desc peut également être utilisée.
la source