반응형
Ant_U
DBA 개미
Ant_U
전체 방문자
오늘
어제
  • 분류 전체보기 (262)
    • AWS (3)
    • C# (1)
    • SQL (236)
      • MYSQL (186)
      • MSSQL (50)
    • 자격증 (20)
      • SQLD (12)
      • SQLP (8)

인기 글

최근 글

250x250
hELLO · Designed By 정상우.
Ant_U

DBA 개미

SQL/MSSQL

[MSSQL] 데이터베이스 인덱스 조각화 조회 쿼리

2022. 12. 3. 18:10
728x90
반응형

MSSQL 데이터베이스 내 인덱스 조각화 조회 쿼리입니다.

 

SYS.DM_DB_INDEX_PHYSICAL_STATS 테이블과 SYS.INDEXES, SYSINDEXES 테이블 inner join 하여 인덱스 조각화 데이터를 추출합니다.

 

조각화가 많이 진행된 인덱스 내림차순으로 정렬합니다.

 

'Database_Name' 에 데이터베이스명 적어주시면 됩니다.

SELECT
		ROW_NUMBER() over (order by ROUND(AVG_FRAGMENTATION_IN_PERCENT, 2) desc) AS Rownum
		,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
INNER JOIN SYSINDEXES AS R
	ON I.OBJECT_ID = R.ID AND I.INDEX_ID = R.INDID
WHERE	S.DATABASE_ID = DB_ID('Database_Name') -- 현재 데이터베이스
		AND I.NAME IS NOT NULL -- HEAP은 무시
		AND OBJECTPROPERTY(S.OBJECT_ID, 'IsMsShipped') = 0 -- 시스템 개체 무시
		AND I.NAME NOT LIKE 'PK%' -- PK 무시
		AND ROUND(AVG_FRAGMENTATION_IN_PERCENT, 2) > 30 -- 조각화 퍼센티지 체크
		AND R.rows > 10000	-- 테이블 행개수 체크
ORDER BY Fragmentation DESC

 

728x90
반응형

'SQL > MSSQL' 카테고리의 다른 글

[MSSQL] With 절 사용 방법  (0) 2023.03.13
[MSSQL] Create Temp Table / 임시 테이블 생성 쿼리  (0) 2023.03.12
[MSSQL] SQL SERVER Table NOLOCK 쿼리  (0) 2023.03.11
[MSSQL] Truncate Table / 테이블 데이터 전체 삭제 쿼리  (0) 2023.03.10
[MSSQL] Delete Table 테이블 데이터 삭제 방법 및 예시  (0) 2023.03.10
[MSSQL] Update Table / 테이블 업데이트 쿼리  (0) 2023.03.10
[MSSQL] Create Table / 테이블 생성 쿼리  (0) 2023.03.09
[MSSQL] 데이터베이스 테이블 모든 컬럼명 조회 쿼리  (0) 2022.12.02
    'SQL/MSSQL' 카테고리의 다른 글
    • [MSSQL] Delete Table 테이블 데이터 삭제 방법 및 예시
    • [MSSQL] Update Table / 테이블 업데이트 쿼리
    • [MSSQL] Create Table / 테이블 생성 쿼리
    • [MSSQL] 데이터베이스 테이블 모든 컬럼명 조회 쿼리
    Ant_U
    Ant_U

    티스토리툴바