SQL 索引重建:索引碎片百分比增加?

Posted

技术标签:

【中文标题】SQL 索引重建:索引碎片百分比增加?【英文标题】:SQL Index Rebuild: Index Fragmentation % Increases? 【发布时间】:2013-06-24 14:51:11 【问题描述】:

我正在尝试创建一个代理作业,为连接到 Deltek 6.1 接口的 SQL 2008 R2 数据库重建索引。

跑步:

exec sp_msforeachtable 'DBCC DBREINDEX("?"," ",0)'

注意到一些索引实际上变得更加分散。这可能是由于索引间距吗?我们已经在我们的测试和生产网络上通过各种不同的重建方式发生了这种情况。表通常很大,我们在运行重建后更新统计信息。

【问题讨论】:

【参考方案1】:

用于在 SQL Server 中重建所有表索引的脚本:

USE DatabaseName --Enter the name of the database you want to reindex 

DECLARE @TableName varchar(255) 

DECLARE TableCursor CURSOR FOR 

SELECT table_name FROM information_schema.tables 

WHERE table_type = 'base table' 

OPEN TableCursor 

FETCH NEXT FROM TableCursor INTO @TableName 

WHILE @@FETCH_STATUS = 0 

BEGIN 

DBCC DBREINDEX(@TableName,' ',90) 

FETCH NEXT FROM TableCursor INTO @TableName 

END 

CLOSE TableCursor 

DEALLOCATE TableCursor 

【讨论】:

我们已经在做与那个查询相同的事情,我们只是使用已经存在的填充因子而不是定义一个新的填充因子。我们遇到的问题是,在运行重建/重组脚本后,平均碎片百分比实际上变得更糟。 数据库的大小是多少?如果您限制了可能有问题的空间量,则至少需要 10% 的可用空间才能成功进行碎片整理。 数据库大小约为60GB,有15.5GB可用空间

以上是关于SQL 索引重建:索引碎片百分比增加?的主要内容,如果未能解决你的问题,请参考以下文章

SQL Server通过整理索引碎片和重建索引提高速度

SQL Server 索引碎片产生原理重建索引和重新组织索引

sql 用于管理SQL Server重建和重组索引碎片的脚本

Oracle索引碎片检查及定期重建常用表的索引

检查SQL Server 2005的索引密度和碎片信息(转)

SQL Server 索引重建手册