如何一次在所有表上应用非聚集索引

时间:2015-02-20 11:30:13

标签: sql-server-2008-r2

我在sql server中有64个表我想在所有表中应用非聚簇索引。是否可以使用query一次在所有表中应用非聚簇索引。请告诉我是否有任何方法可以应用索引使用单一查询

1 个答案:

答案 0 :(得分:0)

您可以使用光标和动态查询来执行此操作:

DECLARE @t NVARCHAR(MAX)
DECLARE @s NVARCHAR(MAX)

DECLARE cur CURSOR FAST_FORWARD READ_ONLY
FOR
    SELECT  name
    FROM    sys.tables     
OPEN cur

FETCH NEXT FROM cur INTO @t

WHILE @@FETCH_STATUS = 0
    BEGIN

        SET @s = 'CREATE NONCLUSTERED INDEX IDX_' + @t + ' ON dbo.' + @t + '(id)'
        EXEC (@s)

        FETCH NEXT FROM cur INTO @t
    END

CLOSE cur
DEALLOCATE cur

当然,您需要将此调整为适合您要添加索引的列。