본문 바로가기
DATABASE/MsSQL

[MsSQL] Table, Index가 속한 File Group 조회

by DANEW 2024. 7. 3.

Table, Index가 속한 File Group 조회

MsSQL의 데이터는 File Group에 속하여 저장되게 된다.

Table / Index처럼 File Group에 포함되는 데이터들에 대해서 어떤 File Group에 속하여있는지 확인하는 쿼리를 공유한다.

 

MsSQL의 저장방식인 File과 File Group 에 대해서는 아래의 링크를 참고바란다.

[MsSQL] Database File(Data File, Log File) / File Group

 

또한, 각 File 마다의 용량 및 경로를 확인하는 쿼리는 아래의 링크에서 확인이 가능하다.

[MsSQL] 자주 쓰는 쿼리 - Data File Size, Data File 경로 확인 (MDF, NDF)

 

Query

Table과 Index의 File Group 조회 쿼리는 아래와 같다.

반응형
select a.id as table_id,
       a.name as table_name,
       b.indid as index_id,
       d.name as index_name,
       c.groupid as filegroup_id,
       c.groupname as filegroup_name
  from sys.sysobjects a
 inner join sys.sysindexes b
    on a.id = b.id
 inner join sys.sysfilegroups c
    on b.groupid = c.groupid
 inner join sys.indexes d
    on a.id = d.object_id
   and b.indid = d.index_id
 where a.type = 'U'

 

여러 시스템 뷰를 조인하여 사용하며, 마지막에 type = 'U'는 사용자가 만든 오브젝트들에 대해서만 조회하겠다는 조건절이다.

조회를 하면 위와 같은 결과를 출력하는데, Table id와 name / Index id와 name / FileGroup id와 name을 출력한다.

 

각 테이블에 존재하는 모든 index들에 대해서 함께 출력을 해주며,

index id = 0 은  heap Table로 index name 이 null이며,  index id = 1 은 클러스터 인덱스를 뜻한다.

다른 포스팅에서도 몇 번 말했지만, index id = 0 과 1은 공존 할 수 없다.

 

heap table과 clustered index에 대해 알아본 내용은 아래의 링크를 참고바란다.

[MsSQL] Clustered 연구 노트 - 1. Heap Table 구조 파헤치기 (Page, Index)

반응형