大致的重建范围是 逻辑密度碎片>30以及页码总数>8以上的数据库索引碎片
直接上代码(附带生成执行完之后生成日志记录表)
SET QUOTED_IDENTIFIER ON
SET ANSI_NULLS ON
GO
Create PROCEDURE [dbo].[p_index_rebuild_test]
AS
DECLARE @DatabaseName NVARCHAR(255)--数据库名
DECLARE @SchemaName NVARCHAR(255)--架构名
DECLARE @TableName NVARCHAR(255)--表名
DECLARE @IndexName NVARCHAR(255)--索引名
DECLARE @IndexType NVARCHAR(255)--索引类型
DECLARE @IndexColums NVARCHAR(MAX)--索引列清单
DECLARE @DuringTime INT--重建时间
DECLARE @Before_avg_fragmentation_in_percent DECIMAL(19,8)--重建前的逻辑扫描碎片
DECLARE @After_avg_fragmentation_in_percent DECIMAL(19,8)--重建后的逻辑扫描碎片
SET XACT_ABORT ON
SET NOCOUNT ON
-----------定期重建索引执行计划--------
BEGIN TRAN
----------1、创建记录表,写入本次索引重构的日志
--日志表名
DECLARE @LogTableName NVARCHAR(255)='ReBuildIndexLog_'+CONVERT(VARCHAR(100),GETDATE(),112)
DECLARE @sql NVARCHAR(MAX)=''
IF EXISTS(SELECT * FROM sys.objects WHERE object_id=OBJECT_ID(@LogTableName))
BEGIN
SET @sql='drop table '+@LogTableName
EXEC (@sql)
END
SQLServer:定期重建索引策略与实践

本文探讨了SQLServer数据库中针对逻辑密度碎片超过30%且页码总数超过8的索引进行定期重建的重要性。提供了一段用于执行重建操作的代码,并包含了执行后生成日志记录表的功能。
最低0.47元/天 解锁文章
354

被折叠的 条评论
为什么被折叠?



