我检查了谷歌,发现如果填充因子为 0,那么它使用索引页面上的 100% 空间。否则我们需要指定填充因子。
我对专家的问题是:
- 我们是否应该将其留空以获得最大的索引效率?
我在我们的一些数据库中发现,对于某些索引,填充因子是 80、85、90、100。那么,我们什么时候应该将填充因子指定为 80 或 90?
从 sys.indexes 中选择 fill_factor,* 其中 fill_factor <> 0
我检查了谷歌,发现如果填充因子为 0,那么它使用索引页面上的 100% 空间。否则我们需要指定填充因子。
我对专家的问题是:
我在我们的一些数据库中发现,对于某些索引,填充因子是 80、85、90、100。那么,我们什么时候应该将填充因子指定为 80 或 90?
从 sys.indexes 中选择 fill_factor,* 其中 fill_factor <> 0
默认填充因子为 100 开箱即用(如果尚未更改)。当 fillfactor 为 0 时,DBCC DBREINDEX 使用为索引指定的最后一个值。
Fillfactor 旨在在创建、重建或整理索引时提高索引性能和数据存储。通过设置填充因子,您可以指定每页上要填充数据的空间百分比,从而在每页上保留可用空间以供将来表增长。例如,如果填充因子为 80,则每页的 20% 为空,为新记录提供空间。当该空间用完时,会发生页面拆分。
Microsoft 建议我们在大多数情况下使用默认填充因子。但是,如果您知道如何使用您的表,则可以对其进行修改。非只读表的填充因子 100 会立即导致 INSERT/UPDATE 页面拆分,因此 100 仅适用于只读表。具有大量写入的表格应该在 50% 到 70% 之间。所有其他表应该在 80 和 90 左右,如果它们主要是 SELECTed 而不是 INSERTed 和 UPDATEd。
您应该阅读页面拆分。此外,建立一个重建索引的时间表。您还需要考虑是否对每个索引进行聚类。例如,可以从调度中排除具有低碎片百分比的聚集索引以节省一些时间。
一些参考资料: