Điều này dựa trên quan niệm sai lầm rằng các chỉ mục XML hiện là loại duy nhất có thể có lược đồ id> = 256000 (ít nhất là dựa trên quan sát của chúng; lược đồ này không được ghi lại bằng AFAIK, do đó thậm chí không chắc là nó có chủ ý hay không). Có lẽ tốt trong các phiên bản hiện tại, nhưng ai biết loại chỉ mục nào sẽ được thêm vào tiếp theo và sơ đồ id của nó sẽ bắt đầu ở đâu? Nếu bạn muốn loại trừ các chỉ mục XML, thì bây giờ bạn cũng loại trừ một số thứ khác. Chẳng hạn, các chỉ mục không gian dường như bắt đầu ở id = 384000. Nếu truy vấn ở trên có ý định bao gồm các chỉ mục không gian nhưng không phải là chỉ mục XML, chúng sẽ gây bất ngờ.
Một bộ lọc tốt hơn nhiều sẽ là:
WHERE type <> 3;
... Hoặc thậm chí tốt hơn, vì nó là tài liệu tự ...
WHERE type_desc <> N'XML';
Và bây giờ khi bạn muốn loại trừ, giả sử, các chỉ mục không gian, truy vấn của bạn thay đổi thành ...
WHERE type_desc NOT IN (N'XML', N'SPATIAL');
... thay vì phải tìm ra phạm vi số nào mà các giá trị id cho các chỉ mục không gian có thể chiếm (hoặc không). Chúc may mắn với điều đó.
Đây là những tài liệu khá rõ ràng trong sys.indexes (Transact-SQL) . Tôi thấy không có tài liệu tham khảo nào về con số ma thuật này và tôi khuyên bạn nên chỉ cho tác giả hướng dẫn của bạn ở đây để họ có thể thấy rằng con số ma thuật này không phải là thứ mà họ nên dựa vào (đừng bận tâm dạy người khác dựa vào).
sys.sysindexkeys