实用SQL: 通过向表加clusted索引重整数据库

资讯 驱动中国 若水 561 次阅读 0 条评论
分享 Q

-- {q}x;<  
--  ArrangeDB.SQL 重整数据库 &f1n]m+  
-- C;}  
--  CopyRights @2003.12.29 Digital China Management System Co., Ltd. q)"8D z_|Z  
-- '2 x+ph  
-- 重整流程:把所有用户表增加 clustered 索引,这样SQLSERVER会重整表,然后 9%7*~bW_  
--再删除索引 c^/V*A'qG[  
-- 'n gn  
-- 使用时机:日常维护,建议每周做一次重整。 6+q ]l+  
-- pc kI  
-- 注意事项:做完后请做数据库收缩,更新统计,重新索引,及完整性检查 ^BHPb1oT  
b~KsX(]  
--drop table #dcms_index_info GTM`@  
--要用到的临时表 :PFTl;  
create table #dcms_index_info hK%o6mx3^  
( `I2dE\!M  
  index_name sysname, =7rW2#tE  
  index_description varchar(210), 0GmV,y+_5  
  index_keys varchar(2078) dHlXe@Rw"g  
) ne%c'-P*_  
Y'Pn m  
--设置环境 p)Q!!/K6  
set NOCOUNT ON .$=\,30w  
--程序开始:变量 +ZVuE o  
declare @sql varchar(500) {R 4t?if  
declare @TableName varchar(20) 5*l1W3DhW  
declare @ErrorSave int RTY/078  
T\?V|[bd  
--用所有的用户表处理 -|%D!?  
declare Cursor1 Cursor ?>Xd<QM  
for O+6x)+,  
select name from sysobjects where xtype='U' order by name p^7?TOpX)  
P)RB]}ij  
open Cursor1 VR2h)G:M^  
fetch next from Cursor1 into @TableName <`,: ,"  
6QN&cvF`  
while @@fetch_status = 0 <`bJM]D-/  
begin }(H&>f1z  
--为了检测表中是不是有CREATE_DATE这个列,易飞的表中都有,如果没有就跳过,不过处理 HzD)7{  
--应该还有更好的方法,我暂时这样用了。不想用sp_columns因为不想建表,慢就慢点吧 w,V>TN0  
if COLUMNPROPERTY(OBJECT_ID(@TableName),'CREATE_DATE','PRECISION') is not null MuQPg:j  
begin Ax#6>^JI  
  print 'process table ' + @TableName Hsfwfd-5  
K]y1A'v  
  --取得当前表的索引信息 ?~H(wkGzL  
  delete #dcms_index_info T;qg@B?fa  
  set @sql = ' sp_helpindex ''' + @TableName + ''' ' 3n7@ 2!  
  insert into #dcms_index_info exec (@sql) nN/bK`@^  
H7&W`nC^  
  --查找是不是已经有聚簇索引(clustered),如果已经有了就不做,在易飞中有clustered索引是少数 ex zx  
  select index_name from #dcms_index_info where index_description like 'clustered%' xHiNMW  
N@pIp!  
  if @@ROWCOUNT = 0 [sT]a]X"-  
  begin ;mG_W  
  set @sql = ' create clustered index DcTempIndex001 on ' + @TableName + ' ( CREATE_DATE ) ' q[}qK  
  exec (@sql) l< drk}ES  
d/$`t 9n  
  set @sql = ' DROP index ' + @TableName + '.DcTempIndex001 ' DGsf}6 B1  
  exec (@sql) 6AACVdy" #p#分页标题#e# 
  end *@{)3]>M@  
end rGv5W5.  
X|.p`y;  
fetch next from Cursor1 into @TableName Pd+&9w_ (  
end wYqB  
Xi} "U-Xe  
drop table #dcms_index_info " _$1Vdff  
close Cursor1 j<AOltu  
deallocate Cursor1 >5^s_1#i  
fTIWwX[P  
{<t>MIE%  
gail=HA2  

索引 数据库 通过 实用 @TableName @sql #
版权声明:本文由驱动中国整理发布,转载需注明出处与原文链接。如有疑问请联系 editor@qudong.com
本文价值 成为第一个评分的人
登录后为本文打分
网友评论0 条评论
正在回复 的评论取消
评论加载中…
🔐

登录后参与互动

评论、点赞均可赚积分
连续签到、邀请好友也有奖励 🎁

电脑端: 微信扫码登录 微信内: 一键登录

微信扫一扫

打开微信「扫一扫」,分享本文到朋友圈或好友