Ini didasarkan pada kesalahpahaman bahwa indeks XML saat ini adalah satu-satunya jenis yang dapat memiliki skema id>> 256000 (setidaknya berdasarkan pengamatan mereka; skema ini tidak didokumentasikan AFAIK, jadi bahkan tidak yakin apakah itu disengaja). Mungkin bagus di versi saat ini, tetapi siapa yang tahu jenis indeks apa yang akan ditambahkan selanjutnya dan di mana skema id-nya akan dimulai? Jika Anda ingin mengecualikan indeks XML, Anda sekarang juga mengecualikan sesuatu yang lain. Indeks spasial, misalnya, tampaknya dimulai dengan id = 384000. Jika kueri di atas berniat untuk memasukkan indeks spasial tetapi bukan indeks XML, mereka akan terkejut.
Filter yang jauh lebih baik adalah:
WHERE type <> 3;
... atau bahkan lebih baik, karena itu mendokumentasikan diri ...
WHERE type_desc <> N'XML';
Dan sekarang ketika Anda ingin juga mengecualikan, katakanlah, indeks spasial, permintaan Anda berubah menjadi ...
WHERE type_desc NOT IN (N'XML', N'SPATIAL');
... daripada harus mencari tahu kisaran numerik apa yang mungkin ditempati oleh nilai id untuk indeks spasial (atau tidak). Semoga beruntung dengan itu.
Ini cukup jelas didokumentasikan dalam sys.indexes (Transact-SQL) . Saya tidak melihat referensi ke angka ajaib ini dan saya sangat menyarankan Anda mengarahkan penulis tutorial Anda di sini sehingga mereka dapat melihat bahwa angka ajaib ini bukanlah sesuatu yang harus mereka andalkan (apalagi mengajar orang lain untuk mengandalkan).
sys.sysindexkeys