日期:2014-05-16  浏览次数:20392 次

求移动index脚本
要把现有1个数据库的所有非聚集index, 排名前20 大小的,挪到文件组 FG2 中, 其余的挪到文件组FG3 中,  如何写具体脚本遍历一下所有表index并生成啊? 比如其中一个比较大的:

CREATE NONCLUSTERED INDEX [index_249]
    ON [Usefr] (
[userId] ASC,
[friend_thUserId] ASC
)
INCLUDE (  [id],
)
    WITH (DROP_EXISTING = ON)
    ON fg2;
GO
也可以生成不同的名字,比如先生成index_2491 (添加了个1) 在FG2,再删除index_249。 

------解决方案--------------------
这个好像很麻烦呢。

建议你先把整个数据库的脚本导出来,然后把索引的单独提取出来。

然后,加上 on  fg2,再创建
------解决方案--------------------
只有20个表,没必要搞那么复杂,手动操作也就10来分钟就处理好脚本了,执行时间就另算
------解决方案--------------------
找出1个数据库的所有非聚集index排名前20大小的SQL语句.

select top 20 b.name 'table_name',
              c.name 'index_name'
 from sys.sysindexes a
 inner join sys.tables b on a.id=b.object_id
 inner join sys.indexes c on a.id=c.object_id and a.indid=c.index_id
 where a.indid>1
 order by a.dpages desc