Han*_*non 6 sql-server-2005 sql-server clustered-index heap
我在我们的一个生产数据库中有大约 40 个表,由于各种原因,这些表不是使用聚集索引创建的。
转换这些堆的最佳自动化方法是什么?
由于我天生是一名开发人员,我真的不想手动执行此操作。
我开始为此创建一个过程,如为什么此游标以不正确的顺序产生结果中所述?,然而我对那篇文章的回应让我怀疑我在做什么。
我会说我同意@MartinSmith。确定聚集索引键需要一些思考和规划。
但是,如果您希望抢先一步并生成一些 T-SQL 代码,例如,CREATE INDEX在具有IDENTITY列(普遍接受的聚集索引键)的堆上创建命令,那么您可以执行以下操作:
declare @create_indexes nvarchar(max);
set @create_indexes = N'';
select
@create_indexes = @create_indexes +
'create clustered index ' + quotename('IX_' + object_name(i.object_id)) +
char(13) + char(10) +
'on ' + quotename(object_name(i.object_id)) + '(' + quotename(c.name) + ');' +
char(13) + char(10) +
'go' +
char(13) + char(10)
from sys.indexes i
inner join sys.columns c
on i.object_id = c.object_id
where i.type = 0
and c.is_identity = 1;
print @create_indexes;
Run Code Online (Sandbox Code Playgroud)
再次重申,就像@MartinSmith 所说的那样,我不会像这样盲目地执行任何会影响性能和设计的 DDL。但以上只是一个开始,将为您提供具有 IDENTITY 列的堆的 T-SQL 。
| 归档时间: |
|
| 查看次数: |
1713 次 |
| 最近记录: |