Назад | Перейти на главную страницу

SQL: переиндексировать / перестроить всю БД

Я устал заново индексировать / перестраивать каждую имеющуюся у меня таблицу, есть ли способ сделать это для всей базы данных?

Самый простой способ сделать это - использовать чужие сценарии обслуживания. Ола Халленгрен самые известные и бесплатные, но Minion Ware также имеет бесплатный скрипт переиндексации..

Если по какой-то причине вы не можете этого сделать, возможно, сработает что-то вроде этого:

Use YourDB

Declare @TBname nvarchar(255),
        @SQL nvarchar(max) 


select @TBname = min(TABLE_NAME) from INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE='BASE TABLE'

while @TBname is not null

BEGIN
    set @SQL='ALTER INDEX ALL ON [' + @TBname + '] REBUILD;'
    --print @SQL
    EXEC SP_EXECUTESQL @SQL
    select @TBname = min(TABLE_NAME) from INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE='BASE TABLE' and TABLE_NAME > @TBname          
END