Це ґрунтується на хибному уявленні, що в даний час індекси XML є єдиним типом, який коли-небудь може мати схему ідентифікації, яка становить> = 256000 (принаймні, виходячи з їх спостереження; ця схема не документально підтверджена AFAIK, тому навіть не впевнений, чи це навмисно). Напевно, добре в поточних версіях, але хто знає, який тип індексу буде доданий далі і звідки розпочнеться його схема id? Якщо ви хочете виключити індекси XML, тепер ви також виключаєте щось інше. Наприклад, просторові індекси, здається, починаються з id = 384000. Якщо вищевказаний запит має на меті включати просторові індекси, але не XML-індекси, їх чекає сюрприз.
Набагато кращим фільтром буде:
WHERE type <> 3;
... а ще краще, оскільки це самодокументація ...
WHERE type_desc <> N'XML';
А тепер, коли ви також хочете виключити, скажімо, просторові індекси, ваш запит змінюється на ...
WHERE type_desc NOT IN (N'XML', N'SPATIAL');
... замість того, щоб з'ясовувати, який числовий діапазон можуть містити (або ні) значення id для просторових індексів. Удачі в цьому.
Вони досить чітко зафіксовані в sys.indexes (Transact-SQL) . Я не бачу посилання на це магічне число, і настійно рекомендую вказати тут свого підручника, щоб вони побачили, що це магічне число - це не те, на що слід покладатися (не маючи на увазі, щоб навчити інших покладатися).
sys.sysindexkeys