usr*_*usr 11 index sql-server metadata catalog-views
在我读到的某个教程中,作者正在sys.indexes
根据谓词进行过滤index_id < 256000
。这有什么作用?
Aar*_*and 17
这是基于这样一种误解,即 XML 索引是目前唯一可以具有 >= 256000 的 id 方案的类型(至少根据他们的观察;该方案没有记录在 AFAIK 中,因此甚至不确定它是否是故意的)。在当前版本中可能没问题,但谁知道接下来会添加什么类型的索引以及它的 id 方案将从哪里开始?如果您想排除 XML 索引,您现在还要排除其他内容。例如,空间索引似乎从 id = 384000 开始。如果上面的查询打算包含空间索引但不包含 XML 索引,那么它们将会大吃一惊。
一个更好的过滤器是:
WHERE type <> 3;
Run Code Online (Sandbox Code Playgroud)
......甚至更好,因为它是自我记录的......
WHERE type_desc <> N'XML';
Run Code Online (Sandbox Code Playgroud)
现在,当您还想排除空间索引时,您的查询将更改为...
WHERE type_desc NOT IN (N'XML', N'SPATIAL');
Run Code Online (Sandbox Code Playgroud)
...而不必弄清楚空间索引的 id 值可能占用(或不占用)的数字范围。祝你好运。
这些在sys.indexes (Transact-SQL) 中有非常清楚的记录。我没有看到这个神奇数字的参考,我强烈建议你将你的教程作者指向这里,这样他们就可以看到这个神奇数字不是他们应该依赖的东西(更不用说教别人依赖了)。