SQL Server - 重建超出特定碎片阈值的索引

时间:2015-02-18 21:37:15

标签: sql .net sql-server performance

我想设置一个夜间脚本来重建超过30%碎片的所有索引。你可以帮忙解决这个问题吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

您可以使用Ola Hallengren's index maintenance solution。如果您只想重建索引,那么您可以配置dbo.IndexOptimize过程:

CREATE PROCEDURE [dbo].[IndexOptimize]
@Databases nvarchar(max),
@FragmentationLow nvarchar(max) = NULL,
@FragmentationMedium nvarchar(max) = NULL,
@FragmentationHigh nvarchar(max) = 'INDEX_REBUILD_ONLINE,INDEX_REBUILD_OFFLINE',
@FragmentationLevel1 int = 5,
@FragmentationLevel2 int = 30, 
...

这些值具有以下含义:

  1. 当碎片高于30%(参数@FragmentationLevel2)被认为是高时。
  2. 当索引的碎片很高时,SQL Server使用以下操作(参数@FragmentationHigh):INDEX_REBUILD_ONLINE如果可用(企业版),否则使用INDEX_REBUILD_OFFLINE。< / LI>

    参考文献:

    Documentation: SQL Server Index and Statistics Maintenance

    SQLBits presentation: Inside Ola Hallengrens Maintenance Solution

    Tweaking the Defaults for Ola Hallengren’s Maintenance Scripts

    Automate and Improve Your Database Maintenance Using Ola Hallengren's Free Script - section IndexOptimize Stored Procedure