博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
sql server 2005 自动重新建立索引
阅读量:2066 次
发布时间:2019-04-29

本文共 1904 字,大约阅读时间需要 6 分钟。

CREATE PROC SHANE_AutoProIndex  AS  DECLARE @tblName VARCHAR(40)  DECLARE @indexID INT DECLARE @proFlag FLOAT DECLARE @indexName VARCHAR(40)  DECLARE @sql varchar(200)   DECLARE _tblCur CURSOR FOR SELECT TblName FROM AutoProIndexModel  OPEN _tblCur  FETCH NEXT FROM _tblCur INTO @tblName  WHILE @@FETCH_STATUS = 0  BEGIN PRINT 'Now is Proing: ' + @tblName  --PRINT @tblName    DECLARE _indexCur CURSOR FOR SELECT index_id, avg_fragmentation_in_percent    FROM sys.dm_db_index_physical_stats(DB_ID(N'AdventureWorks'), OBJECT_ID(@tblName), NULL, NULL, 'LIMITED')      OPEN _indexCur   FETCH NEXT FROM _indexCur INTO @indexID, @proFlag    WHILE @@FETCH_STATUS = 0   BEGIN    PRINT 'The index id is: ' + CAST(@indexID AS VARCHAR(10)) + ', avg_fra_in_percent is: ' + CAST(@proFlag AS VARCHAR(20))     IF @proFlag > 5 AND @proFlag < 30      BEGIN      SELECT @indexName = name FROM sys.indexes WHERE [object_id] = OBJECT_ID(@tblName) AND index_id = @indexID       print @indexName + ' must be  REORGANIZE'      SET @sql = 'ALTER INDEX ' + @indexName + ' ON ' + @tblName + ' REORGANIZE'      EXEC(@sql)  PRINT @SQL      END    ELSE IF @proFlag > 30      BEGIN      SELECT @indexName = name FROM sys.indexes WHERE [object_id] = OBJECT_ID(@tblName) AND index_id = @indexID       print @indexName + ' must be  REBUILD'      SET @sql = 'ALTER INDEX ' + @indexName + ' ON ' + @tblName + ' REBUILD'      EXEC(@sql)  PRINT @SQL      END    FETCH NEXT FROM _indexCur INTO @indexID, @proFlag   END     CLOSE _indexCur   DEALLOCATE _indexCur   print ''  FETCH NEXT FROM _tblCur INTO @tblName  END  CLOSE _tblCur  DEALLOCATE _tblCur   该PROC中有张表AutoProIndexModel,这张表里面存储的是需要维护索引的几张表名。该PROC流程如下:1.先使用游标读取AutoProIndexModel中的需要整理的表的信息,进行循环2.使用DMF,sys.dm_db_index_physical_stats得出每张表中每个索引的碎片情况后,根据avg_fragmentation_in_percent 字段的值进行具体的操作3.如果avg_fragmentation_in_percent 在5-30之间进行索引重新组织,>30则索引重建。新建个计划任务后,定时调用该存储过程就可以实现索引的自动维护了。

转载地址:http://euymf.baihongyu.com/

你可能感兴趣的文章
支付宝集五福最全攻略,五分钟集齐五福!
查看>>
Runc 容器初始化和容器逃逸
查看>>
使用 GDB + Qemu 调试 Linux 内核
查看>>
介绍一个小工具:SSL-exporter
查看>>
深入理解 tc ebpf 的 direct-action (da) 模式(2020)
查看>>
为容器时代设计的高级 eBPF 内核特性(FOSDEM, 2021)
查看>>
Loki系列文章
查看>>
字节跳动面试官问:微服务下如何保证分布式事务的最终一致性?
查看>>
使用 Prometheus 监控 WireGuard
查看>>
BPF 可移植性和 CO-RE(一次编译,到处运行)
查看>>
万字长文:彻底搞懂容器镜像构建
查看>>
GitHub 又又又多了一个新主题 —— Dimmed Dark 主题!
查看>>
cgroup 挂载失败是什么鬼???
查看>>
深入 kubernetes API 的源码实现
查看>>
真香!使用 Goland 网页版实现真正的云开发
查看>>
又超时了!Etcd分布式锁你用明白了吗?
查看>>
工程师应该怎么学习
查看>>
记一次 Kubernetes 机器内核问题排查
查看>>
记一次 Kubernetes 中严重的安全问题
查看>>
在业务系统中寻找技术含量
查看>>