【发布时间】:2014-03-01 13:36:15
【问题描述】:
SQL Server 确实没有使用碎片化的索引吗?
这怎么可能?如果是,优化器如何决定何时使用索引?
我已经四处搜索,但找不到使 SQL Server 忽略特定索引的公式/规则。
编辑:
其实我在这个article中找到了如下语句:
高碎片 - 如果索引碎片超过 40%,优化器 可能会忽略索引,因为搜索 a 的成本更高 碎片索引而不是执行表扫描。
所以,优化器似乎最终忽略了碎片索引。 任何人都可以更清楚地说明这是如何完成的吗?
【问题讨论】:
-
我真的不相信那篇文章,我运行了一些 SQL 服务器,我们不运行任何索引维护,因为它会造成比其他任何东西更多的中断,而且它无论如何都在共享 SAN 上,所以碎片整理是反正没意义。这些索引几乎处于 80/90% 的碎片化状态,仍然被优化器使用。
标签: tsql indexing sql-server-2012 fragmentation