Jest to oparte na błędnym przekonaniu, że indeksy XML są obecnie jedynym typem, który może mieć schemat identyfikatora, który wynosi> = 256000 (przynajmniej na podstawie ich obserwacji; ten schemat nie jest udokumentowany AFAIK, więc nie jestem pewien, czy jest celowy). Prawdopodobnie dobrze w obecnych wersjach, ale kto wie, jaki typ indeksu zostanie dodany następnie i gdzie rozpocznie się jego schemat identyfikacyjny? Jeśli chcesz wykluczyć indeksy XML, teraz wykluczasz także coś innego. Na przykład indeksy przestrzenne zaczynają się od id = 384000. Jeśli powyższe zapytanie ma obejmować indeksy przestrzenne, ale nie indeksy XML, czeka ich niespodzianka.
Znacznie lepszym filtrem byłoby:
WHERE type <> 3;
... lub nawet lepiej, ponieważ jest to samo-dokumentowanie ...
WHERE type_desc <> N'XML';
A teraz, gdy chcesz również wykluczyć, powiedzmy, indeksy przestrzenne, twoje zapytanie zmienia się na ...
WHERE type_desc NOT IN (N'XML', N'SPATIAL');
... zamiast zastanawiać się, jaki zakres liczbowy mogą zajmować (lub nie) wartości id dla indeksów przestrzennych. Powodzenia z tym.
Są one dość wyraźnie udokumentowane w sys.indexes (Transact-SQL) . Nie widzę odniesienia do tej magicznej liczby i bardzo polecam wskazanie tutaj autora samouczka, aby mogli zobaczyć, że ta magiczna liczba nie jest czymś, na czym powinni polegać (nie wspominając o uczeniu innych, na czym można polegać).
sys.sysindexkeys