Как перестроить все индексы на базе SQL Server

Скрипт выполняет rebuild или reorganize для индексов на базе данных. 

@minRows задает минимальное количество строк в таблице, для который будет выполнена обработка индексов. 

IF OBJECT_ID(N'tempdb..#RowCounts') IS NOT NULL
BEGIN
	DROP TABLE #RowCounts
END
GO

declare @minRows int =400 -- перестройка индекса выполняется только для таблиц где больше N строк

CREATE TABLE #RowCounts(NumberOfRows BIGINT,TableName VARCHAR(128))

EXEC sp_MSForEachTable 'INSERT INTO #RowCounts
SELECT COUNT_BIG(*) AS NumberOfRows,
''?'' as TableName FROM ?'

select  TableName, NumberOfRows from #RowCounts where NumberOfRows>@minRows


---SELECT TableName,NumberOfRows FROM #RowCounts ORDER BY NumberOfRows DESC,TableName
declare @TableName nvarchar(256)
declare @NumberOfRows int
declare cur CURSOR LOCAL for
select  TableName, NumberOfRows from #RowCounts where NumberOfRows>@minRows

open cur

fetch next from cur into @TableName, @NumberOfRows

while @@FETCH_STATUS = 0 BEGIN
print @TableName
 -- Rebuild (блочит таблицу, но быстрее идет)    или   REORGANIZE (дольше. но не блочит таблицу)
EXEC ('ALTER INDEX ALL ON ' +@TableName + ' Rebuild  ;')
fetch next from cur into @TableName, @NumberOfRows
END

close cur
deallocate cur

DROP TABLE #RowCounts
Насколько полезной была статья?

Что еще посмотреть по 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