Индексы SQL Server. Поиск дубликатов

Запрос покажет все дублирующие индексы в базе данных SQL Server

-- Ищем дубликаты индексов (создает нагрузку на процессор)
select t1.tablename,t1.indexname,t1.columnlist,t2.indexname,t2.columnlist from
   (select distinct object_name(i.object_id) tablename,i.name indexname,
             (select distinct stuff((select ', ' + c.name
                                       from sys.index_columns ic1 inner join
                                            sys.columns c on ic1.object_id=c.object_id and
                                                             ic1.column_id=c.column_id
                                      where ic1.index_id = ic.index_id and
                                            ic1.object_id=i.object_id and
                                            ic1.index_id=i.index_id
                                      order by index_column_id FOR XML PATH('')),1,2,'')
                from sys.index_columns ic
               where object_id=i.object_id and index_id=i.index_id) as columnlist
       from sys.indexes i inner join
    	    sys.index_columns ic on i.object_id=ic.object_id and
                                    i.index_id=ic.index_id inner join
            sys.objects o on i.object_id=o.object_id
      where o.is_ms_shipped=0) t1 inner join
   (select distinct object_name(i.object_id) tablename,i.name indexname,
             (select distinct stuff((select ', ' + c.name
                                       from sys.index_columns ic1 inner join
                                            sys.columns c on ic1.object_id=c.object_id and
                                                             ic1.column_id=c.column_id
                                      where ic1.index_id = ic.index_id and
                                            ic1.object_id=i.object_id and
                                            ic1.index_id=i.index_id
                                      order by index_column_id FOR XML PATH('')),1,2,'')
                from sys.index_columns ic
               where object_id=i.object_id and index_id=i.index_id) as columnlist
       from sys.indexes i inner join
    	    sys.index_columns ic on i.object_id=ic.object_id and
                                    i.index_id=ic.index_id inner join
            sys.objects o on i.object_id=o.object_id
 where o.is_ms_shipped=0) t2 on t1.tablename=t2.tablename and
       substring(t2.columnlist,1,len(t1.columnlist))=t1.columnlist and
       (t1.columnlist<>t2.columnlist or
         (t1.columnlist=t2.columnlist and t1.indexname<>t2.indexname))
Насколько полезной была статья?

Что еще посмотреть по SQL Server

SQL. Как работать с датами в SQL Server

SQL Server. Как переносить на новую строку в строковой переменной в SQL

SQL. Вывод разметки HTML в сыром виде (в виде тегов) в SQL

SQL. Как привести дату в строку в нужный формат в SQL Server

SQL. Как использовать select from Хранимка

SQL. Как прописью написать число в SQL

SQL. Как массово залить данные в таблицу БД через CSV (Excel)

SQL. Как перенести сложный тип данных на другую базу

SQL. Как перевести дату JS в дату SQL

SQL. Как выводить окончание у множественного числа (5 заказОВ, 3 заказА)

Настройка полнотекстового поиска fulltext search в SQL Server

Как занести тестовые данные в таблицу SQL Server

Разработчик SQL, нужны клиенты и заказы?

Прямые заказы от клиентов. Нужно знать только SQL и HTML
Работа на MS SQL Server

Выгода от использования Falcon Space

В 2-3 раза экономнее и быстрее, чем заказная разработка
Более гибкая, чем коробочные решения и облачные сервисы
Используйте готовые решения и изменяйте под свои потребности
Нужна бесплатная консультация?
Планируете делать веб-проект?
Сайт использует Cookie. Правила конфиденциальности OK