2022. 1. 4. 15:59ㆍIT/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 동적 관리 함수를 조회해서 조각화가 심한 인덱스를 확인할 수 있다.
'IT > MS-SQL ' 카테고리의 다른 글
MSSQL TABLE INDEX SEARCH 테이블 인덱스 조회 (0) | 2022.01.07 |
---|---|
MSSQL 인덱스 조각 모음 쿼리 (0) | 2022.01.07 |
[MSSQL] 특정일자 요일 구하기, 오늘 날짜 요일 구하기, DATEPART, 월화수목금토일 (0) | 2021.11.23 |
MSSQL 숫자만 조회/MS-SQL 문자만 조회/ISNUMERIC (0) | 2021.07.06 |
MSSQL DB 복구중 해결 (0) | 2021.05.13 |