Sql-Server
index_id < 256000 有什麼意義?
在我閱讀的某個教程中,作者是
sys.indexes
基於謂詞進行過濾index_id < 256000
。這有什麼作用?
這是基於這樣一種誤解,即 XML 索引是目前唯一可能具有 >= 256000 的 id 方案的類型(至少基於他們的觀察;該方案沒有記錄在 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)中有非常清楚的記錄。我沒有看到對這個幻數的引用,我強烈建議您在此處指出您的教程作者,這樣他們就可以看到這個幻數不是他們應該依賴的東西(更不用說教別人依賴了)。