สิ่งนี้ขึ้นอยู่กับความเข้าใจผิดที่ว่าดัชนี XML เป็นประเภทเดียวที่ปัจจุบันสามารถมีรูปแบบ id ที่> = 256000 (อย่างน้อยตามการสังเกตของพวกเขา; รูปแบบนี้ไม่ได้บันทึกไว้ใน AFAIK ดังนั้นจึงไม่แน่ใจว่าเป็นเจตนาหรือไม่) อาจเป็นไปได้ดีในเวอร์ชันปัจจุบัน แต่ใครจะรู้ว่าจะเพิ่มดัชนีประเภทใดต่อไป หากคุณต้องการยกเว้นดัชนี XML ตอนนี้คุณก็จะยกเว้นสิ่งอื่นด้วย ตัวอย่างเช่นดัชนีเชิงพื้นที่ดูเหมือนจะเริ่มต้นที่ id = 384000 หากแบบสอบถามด้านบนมีเจตนาที่จะรวมดัชนีเชิงพื้นที่ แต่ไม่ใช่ดัชนี XML พวกเขาจะต้องประหลาดใจ
ตัวกรองที่ดีกว่านี้คือ:
WHERE type <> 3;
... หรือดีกว่าเนื่องจากเป็นเอกสารด้วยตนเอง ...
WHERE type_desc <> N'XML';
และตอนนี้เมื่อคุณต้องการยกเว้นพูดดัชนีเชิงพื้นที่แบบสอบถามของคุณเปลี่ยนเป็น ...
WHERE type_desc NOT IN (N'XML', N'SPATIAL');
... แทนที่จะต้องคิดออกว่าช่วงค่าตัวเลขสำหรับดัชนีเชิงพื้นที่อาจครอบครอง (หรือไม่) ขอให้โชคดี
เหล่านี้ได้รับการบันทึกสวยอย่างชัดเจนในsys.indexes (Transact SQL) ฉันไม่เห็นการอ้างอิงถึงหมายเลขเวทย์มนตร์นี้และฉันขอแนะนำให้คุณชี้ผู้แต่งบทช่วยสอนของคุณที่นี่เพื่อที่พวกเขาจะได้เห็นว่าหมายเลขเวทย์มนตร์นี้ไม่ใช่สิ่งที่พวกเขาควรจะไว้วางใจ
sys.sysindexkeys