如果SQL Server 2012中有另一个索引可用,则如何删除索引

时间:2017-11-22 08:44:07

标签: sql sql-server-2012

我的表中有重复索引,想要删除重复项。

如果另一个索引存在,我想写一个脚本从一对中删除一个索引。

这是我的问题:

IF EXISTS (SELECT * FROM sysindexes WHERE name = 'IX_mDate')
    BEGIN TRY
        DROP INDEX IX_Ma ON MarkTo

        Print 'Dupliate Index has been removed'
    END TRY 
    BEGIN CATCH 
       PRINT  error_message()
    END CATCH

此查询的问题在于,即使没有其他重复索引,也会继续删除剩余索引。我怎样才能实现我们所寻找的目标?另外,有没有办法在一个查询中逐个删除索引?

我有点卡住,我的客户已经在哀悼。这些重复索引正在扼杀性能。

1 个答案:

答案 0 :(得分:1)

EXISTS表达式中包含两个索引。

IF EXISTS (SELECT 1 FROM sys.indexes WHERE object_id = OBJECT_ID(N'dbo.Mark') AND name = 'IX_MtmDate')
    AND EXISTS (SELECT 1 FROM sys.indexes  WHERE object_id = OBJECT_ID(N'dbo.Mark') AND name = 'IX_Mark')
BEGIN TRY
    DROP INDEX IX_Mark ON Mark

    Print 'Dupliate Index has been removed'
END TRY 
BEGIN CATCH 
    PRINT  error_message()
END CATCH