日期:2014-05-17  浏览次数:20512 次

重建数据库所有表的索引问题
使用DBReindex重建数据库索引时,填充因子没有指定值,即 DBCC DBReindex(talbe,'','')。

请问:
1.填充因子不指定值时它的默认值是多少?对数据库有没有影响?
2.重建所有表的索引时,给填充因子指定多少合适?

谢谢
索引 数据库

------解决方案--------------------
1.填充因子不指定值时它的默认值是多少?对数据库有没有影响?
跟你默认配置一样,如果你没改过就是0,也就是填满一个数据页,一般来说对数据库没有影响。
2.重建所有表的索引时,给填充因子指定多少合适?
这个要根据你表的使用,如果频繁插入,导致有热点,可以适当把填充因子减少,但是容易造成过多分页
------解决方案--------------------
填充因子的值是 1 到 100 之间的百分比,服务器范围的默认值为 0,这表示将完全填充叶级页。 
------解决方案--------------------
http://www.cnblogs.com/CareySon/archive/2012/01/06/2313897.html

这篇文章写得还可以 建议去看看
------解决方案--------------------
回答第二个问题

填充因子的设定要以表的业务为基准,同时也要考虑到索引键的类型。一般的原则是更新频繁的表设低,不频繁的默认。比较推荐设低的场景是以数字或日期为聚集索引,又预计会有频繁插入删除的表。
至于设定的具体数字,要看频繁程度,这是需要经验支撑的决定,如果没经验的话,就用默认就行了。。。。
------解决方案--------------------
1.填充因子不指定值时它的默认值是多少?对数据库有没有影响?
--> 
fillfactor
在创建或重新生成索引时,每个索引页上用于存储数据的空间百分比。创建索引后,fillfactor 将替换填充因子,从而成为该索引以及重新生成的任何其他非聚集索引(因为重新生成了聚集索引)的新默认值。当 fillfactor 为 0 时,DBCC DBREINDEX 将使用上次为索引指定的填充因子值。该值存储在 sys.indexes 目录视图中。
如果指定了 fillfactor,则必须指定 table_name 和 index_name。如果未指定 fillfactor,则使用默认填充因子 100。
参考 http://technet.microsoft.com/zh-cn/library/ms181671(v=sql.105).aspx