[MSSQL] 가장 조각이 많이 난 인덱스 TOP 10

2022. 1. 4. 15:59IT/MS-SQL

반응형

 

 SELECT TOP 10

            DB_NAME() AS DatabaseName

          , OBJECT_NAME(S.OBJECT_ID) AS TableName

          , I.NAME AS IndexName

          , ROUND(AVG_FRAGMENTATION_IN_PERCENT, 2) AS Fragmentation

 FROM SYS.DM_DB_INDEX_PHYSICAL_STATS(DB_ID(),NULL,NULL,NULL,NULL) AS S

 INNER JOIN SYS.INDEXES AS I

 ON S.OBJECT_ID = I.OBJECT_ID AND S.INDEX_ID = I.INDEX_ID

 WHERE S.DATABASE_ID = DB_ID('DB_NAME') -- 현재 데이터베이스

 AND I.NAME IS NOT NULL -- HEAP은 무시

 AND OBJECTPROPERTY(S.OBJECT_ID, 'IsMsShipped') = 0 -- 시스템 개체 무시

 ORDER BY Fragmentation DESC

 

 

 

  MSSQL 의 경우 지속적인 update, insert 등 데이터 입력, 변경 작업과 같은 반복되는 테이블은 인덱스에 조각화가 발생한다. 이는 당연히 인덱스를 통한 Table 조회 성능이 저하되는 결과를 가져온다.

이런 경우 인덱스를 다시 구성하거나 다시 리빌딩해서 조각화를 제거할 수 있다.

sys.dm_db_index_physical_stats 동적 관리 함수를 조회해서 조각화가 심한 인덱스를 확인할 수 있다.




반응형