상세 컨텐츠

본문 제목

SQL Server 인덱스 리빌드

DataBase/SQL Server

by 탑~! 2021. 1. 4. 16:05

본문

-- 특정 테이블 대상으로 인덱스 리빌드를 할 경우

alter index all on xxx테이블명xxx rebuild with (pad_index = on, fillfactor = 90)

-- 전체 테이블 대상으로 리빌드 할 경우 cursor 이용 수행

declare @ii int

declare @sql varchar(1000)

declare @tablename varchar(1000)

declare @ownername varchar(1000)

set @ii= 0;

declare db_cursor cursor for

select table_schema, table_name

from information_schema.tables

where table_type = 'base table'

order by table_schema, table_name

open db_cursor

fetch next from db_cursor into @ownername, @tablename

while @@fetch_status = 0

begin

set @ii = @ii+ 1;

print convert(varchar, @ii) + '. ' + @ownername + ' : ' + @tablename + '---------- start';

set @sql = 'alter index all on ' + @ownername + '.' + @tablename + ' rebuild with (pad_index = on, fillfactor = 90) ';

exec(@sql);

print ' ---------- end';

print ' ';

fetch next from db_cursor into @ownername, @tablename

end

close db_cursor

deallocate db_cursor

;

 

출처 : https://m.blog.naver.com/supercrat/220699836017

관련글 더보기