From 270d6999e7070b89bc1b8cb442ec5ff0fd0d284e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=AD=A6=20=E8=B5=B5?= <89237069@qq.com> Date: Fri, 20 Oct 2023 17:25:45 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E8=84=9A=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../scripts/README.md | 94 +++++++++++++++++++ 1 file changed, 94 insertions(+) diff --git a/code/src/Modules/SettleAccount/host/SettleAccount.HttpApi.Host/scripts/README.md b/code/src/Modules/SettleAccount/host/SettleAccount.HttpApi.Host/scripts/README.md index cac7bae8..ba83d683 100644 --- a/code/src/Modules/SettleAccount/host/SettleAccount.HttpApi.Host/scripts/README.md +++ b/code/src/Modules/SettleAccount/host/SettleAccount.HttpApi.Host/scripts/README.md @@ -573,8 +573,102 @@ END CATCH; DROP TABLE #temp_hbpo + +# 所有碎片超过百分比表,索引重建 + +SET ANSI_NULLS ON GO +SET QUOTED_IDENTIFIER ON +GO + +CREATE proc [dbo].[p_reBuildIndex] + +as + +declare @statement NVARCHAR(1000) + +declare mycursor cursor for + +SELECT 'ALTER INDEX [' + ix.name + '] ON [' + s.name + '].[' + t.name + '] REBUILD WITH ( PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, SORT_IN_TEMPDB = OFF, ONLINE = OFF )' + + as sqlStr + +FROM sys.indexes AS ix + + INNER JOIN sys.tables t + + ON t.object_id = ix.object_id + + INNER JOIN sys.schemas s + + ON t.schema_id = s.schema_id + + INNER JOIN + + (SELECT object_id , + + index_id , + + avg_fragmentation_in_percent, + + partition_number + + FROM sys.dm_db_index_physical_stats (DB_ID(), NULL, NULL, NULL, NULL) + + ) ps + + ON t.object_id = ps.object_id + + AND ix.index_id = ps.index_id + + INNER JOIN + + (SELECT object_id, + + index_id , + + COUNT(DISTINCT partition_number) AS partition_count + + FROM sys.partitions + + GROUP BY object_id, + + index_id + + ) pc + + ON t.object_id = pc.object_id + + AND ix.index_id = pc.index_id + +WHERE ps.avg_fragmentation_in_percent > 0 + + AND ix.name IS NOT NULL + +open mycursor + + + +fetch next from mycursor into @statement + +while(@@fetch_status=0) --如果数据集里一直有数据 + +begin + +EXEC sp_executesql @statement + +--select @statement + +fetch next from mycursor into @statement + +end + +close mycursor + +deallocate mycursor + +GO