环思产品论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
查看: 1967|回复: 0
打印 上一主题 下一主题

重建所有索引

[复制链接]

131

主题

154

帖子

1161

积分

超级版主

机总

Rank: 8Rank: 8

积分
1161
QQ
跳转到指定楼层
楼主
发表于 2014-12-22 09:14:10 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 zhouf 于 2020-10-29 17:50 编辑

这个只产生重建索引的脚本,不执行。
  1. SET NOCOUNT ON;

  2. DECLARE @tbIndex TABLE(iIden INT IDENTITY(1,1) PRIMARY KEY
  3.   ,sObjName NVARCHAR(255),sIndexName NVARCHAR(255));
  4. INSERT INTO @tbIndex
  5. SELECT b.name,a.name
  6.   FROM sys.sysindexes a
  7.   JOIN sys.objects b ON b.object_id=a.id
  8.   WHERE a.indid IN (0,1) AND a.name IS NOT NULL AND b.type='u';

  9. DECLARE @iIden INT=0,@sSQL NVARCHAR(2000)=0x,@rtn NVARCHAR(2)=NCHAR(13)+NCHAR(10);
  10. WHILE EXISTS(SELECT * FROM @tbIndex)
  11. BEGIN
  12.   SELECT TOP 1 @iIden=iIden FROM @tbIndex;
  13.   SELECT @sSQL=N'ALTER INDEX '+sIndexName+N' ON dbo.'+sObjName+N' REORGANIZE;'+@rtn+N'GO'+@rtn
  14.     +N'ALTER INDEX '+sIndexName+' ON dbo.'+sObjName+' REBUILD PARTITION = ALL;'+@rtn+N'GO'+@rtn
  15.     FROM @tbIndex WHERE iIden=@iIden;
  16.   PRINT @sSQL;
  17.   DELETE @tbIndex WHERE iIden=@iIden;
  18. END;
复制代码


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 转播转播 分享分享
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|上海环思 ( 沪ICP备11022428号 )

GMT+8, 2024-9-17 09:45 , Processed in 0.073177 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表