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:
WHERE type <> 3;
... ou mieux encore, car il est auto-documenté ...
WHERE type_desc <> N'XML';
Et maintenant, lorsque vous souhaitez également exclure, par exemple, les index spatiaux, votre requête se transforme en ...
WHERE type_desc NOT IN (N'XML', N'SPATIAL');
... 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).
sys.sysindexkeys