sql - SQL Server 2008的填充因子

标签 sql sql-server sql-server-2008 indexing

我是 SQL Server 2008 填充因子的新手,如 SQL Server 2008 BOL 中所述,

http://msdn.microsoft.com/en-us/library/ms177459.aspx

我的两个困惑,

  1. 填充因子是否适用于索引页?或者同时适用于索引和数据页?一开始,填充因子似乎只适用于索引页——“提供填充因子选项是为了微调索引数据存储和性能”,但最后提到——“如果现有行将被更新如果数据会延长行的大小,请使用小于 100 的填充因子。每页上的额外字节将有助于最大限度地减少因行中的额外长度而导致的页拆分。”有意见吗?

  2. 填充因子是否只对重建索引/创建索引操作生效(只有重建/创建索引才会利用填充因子保留的空闲空间),还是应用于任何插入/更新操作(任何插入/更新操作都会使用填充因子保留的空闲空间)。利用填充因子保留的可用空间)?

提前致谢, 乔治

最佳答案

FILLFACTOR 仅适用于索引页。但这里的问题是,如果您有聚集索引(大多数表都有),您的 FILLFACTOR 本质上也适用于您的数据,因为您的数据位于聚集索引的叶节点内。基本上,如果您有一个真正的只读表,请将其所有索引的 FILLFACTOR 设置为 100。对于任何给定的索引结构,这将为您提供尽可能最小和最快的表。请注意,如果您将要修改的数据索引的 FILLFACTOR 设置为 100,则您将面临页面拆分并可能降低性能。

FILLFACTOR 设置得太高会影响插入/更新操作的性能。当你修改足够多的数据时,你会得到页面分割。这是 B-tree index structure 内在本质的一部分——它会自动平衡树。如果要将 FILLFACTOR 调整为显式设置,BOL表示只有重建索引时才会生效。

关于sql - SQL Server 2008的填充因子,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1113697/

相关文章:

mysql - 订单结果全文

mysql - JavaFX SQL 语法错误

sql-server - MSSQL 2008 R2 : Selecting one duplicate columns once and rest of the columns comma separated

sql-server-2008 - nvarchar(max) 字段和经典 ASP 的奇怪问题

sql-server-2008 - 删除特定模式下的所有 View - SQL

mysql - powerdesigner如何使用 `backquote`生成sql

sql - 创建列并在一个 select 语句中对其进行过滤

sql-server - 有关具有庞大数据集的数据库结构的建议

.net - 如何命名在存储过程中返回的数据集的表?

sql-server-2008 - 如何在sql中以半小时和小时的间隔显示时间