如何在 MS SQL 中重新组织和重建索引?

索引是MS SQL数据库文件的对象。这些模式对象的作用类似于数据库的目录。它们用于改进MS SQL数据库表上的数据检索操作。

然而,随着时间的推移,由于连续的INSERTUPDATE操作,表可能会变得碎片化。而且,像其他对象一样,索引也容易受损坏。如果索引损坏,您可能会收到类似以下错误:

Plain Text

 

要解决与索引损坏或索引碎片化水平增加相关的错误,您可以重建或重新组织索引。在本文中,我们将讨论如何重新组织和重建MS SQL中的索引服务器。我们还将提及一种先进的MS SQL数据库修复工具,可以快速、完全准确地从损坏的SQL数据库文件中恢复索引和其他对象。

检查索引的碎片百分比

在重新组织索引之前,您需要知道碎片化的百分比。您可以使用以下命令来检查索引碎片的百分比:

SQL

 

在SQL Server中重新组织索引

如果索引的碎片化水平在10到30之间,建议重新组织索引。您可以使用以下T-SQL代码来重新组织索引:

SQL

 

或者,您可以使用SQL Server Management Studio(SSMS)来重新组织索引。按照以下步骤进行:

  • 在SSMS中连接到您的SQL Server实例。
  • 在对象资源管理器中展开数据库。
  • 展开表文件夹,然后展开索引文件夹。
  • 右键单击需要重新组织的索引,然后单击重新组织。

在MS SQL中重建索引

如果碎片化较高,则可以重建索引。您可以使用DBCC DBREINDEX命令来重建索引。以下是执行此命令的方法:

SQL

 

此命令不支持空间索引和内存优化列存储索引。

或者,您可以使用ALTER INDEX命令:

SQL

 

您还可以使用SSMS中的图形用户界面重建索引。以下是步骤:

  • 在SSMS中,在对象资源管理器中展开包含需要重建索引的表的数据库。
  • 展开文件夹,然后展开需要重建索引的表。
  • 展开索引文件夹,右键单击需要重建的索引,然后选择重建

修复SQL Server数据库

如果重新组织或重建索引没有效果,那么您可以尝试使用DBCC CHECKDB命令,并使用REPAIR_ALLOW_DATA_LOSS选项来修复数据库。以下是如何使用该命令的步骤:

首先,使用以下命令将数据库模式更改为SINGLE_USER:

SQL

 

接下来,运行以下DBCC CHECKDB命令来修复数据库:

SQL

 

修复后,通过执行以下命令将数据库模式设置为MULTI_USER:

SQL

 

上述DBCC CHECKDB命令可以帮助您解决与索引损坏相关的所有错误。它可以修复SQL数据库中的聚集索引和非聚集索引。但是,它不能保证完全数据恢复,可能会导致数据丢失。为了防止数据丢失,您可以使用专业的MS SQL修复工具。它们采用先进的算法,可以从损坏的数据库中恢复所有对象,包括聚集索引和非聚集索引、存储过程、触发器等。

结论

您可以通过重新组织或重建索引来减少索引碎片化。本文详细解释了如何检查索引中的碎片化百分比以及如何重建索引。

Source:
https://dzone.com/articles/reorganize-and-rebuild-indexes-in-ms-sql