본문 바로가기
Programming/MSSQL

MSSQL TABLE REBUILD

by 제타 2018. 4. 16.
반응형

데이터가 빈번히 삽입 삭제 수정 등이 발생하여 인덱스가 깨지거나 조각화가 일어날 경우 성능저하를 유발할 수 있다.


mssql은 클러스터형 테이블과 heap 테이블로 구성되는데 클러스터형 테이블은 클러스터형 인덱스 기준으로 데이터가 순서대로 저장된다.

사실은 클러스터형 인덱스도 테이블이라고 보면 쉽다. heap 테이블의 경우에는 클러스터형 인덱스가 없을 때 순서가 없이 그냥 저장되는 구조이다.

이때 테이블 리빌드는 조각화가 발생했을 때 중간중간 비어있는 공간을 인지함으로써 재정렬을 통해 테이블을 새것으로 만드는 작업이라고 할 수 있다.

인덱스 리빌드는 추후에 다시 포스팅할 예정이다.


간단하지만 다음 쿼리를 통해 테이블을 리빌드 해주자.


select  'ALTER TABLE ' + object_name(a.object_id) + ' REBUILD;' 

,*

from sys.partitions a join sys.objects b on a.object_id = b.object_id and b.type = 'U'

WHERE   object_name(a.object_id) NOT LIKE '%[0-9][0-9][0-9][0-9]%'

order by rows desc


반응형