如何在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