为什么 SQL Server 中的填充因子默认为 0 (100%)?

NTD*_*DLS 9 index sql-server best-practices fill-factor

我了解填充因子、页面和索引结构,因此我理解为什么 100% 填充因子是一种罕见的最佳实践。那么为什么它默认为 0 (或 100% )呢?为什么不是 90 或 95?

有什么我想念的吗?

Tho*_*ger 8

只是在这里抛出一些关于为什么微软会这样做的建议:

  1. 他们已将默认设置调整为尽可能最佳的 OLAP 性能(填充因子为 0/100 的页面读取更少)
  2. 他们假设INSERTed 数据很可能位于表的末尾,从而使每页的额外空间无用
  3. 他们假设通常UPDATEd 数据不会经常延长行数据,从而导致页面拆分

这里只是猜测。只有 SQL Server 团队自己才能真正准确地回答这个问题。

  • 是的,这些似乎是明智的理论,并且比选择一些任意填充因子更适合典型客户,在很多情况下,你肯定会在页面上永久浪费空间。 (5认同)