새소식

DataBase/MSSQL

[MSSQL] 클러스터 인덱스가 설정 되지 않는 테이블 조회

  • -

MSSQL에서는 기본적으로 PK 생성시 자동으로 클러스터 인덱스가 생성이 됩니다.

 

튜닝에 있어서 가장 기본적인 것이 인덱스 설정입니다.

 

아래의 쿼리는 클러스터 인덱스가 설정되지 않은 테이블을 조회하는 SP 입니다

SELECT A.id             AS Object_id  ,
       A.Name           AS Table_Name ,  
       B.name           AS Index_Name ,
       B.index_id       AS index_id   ,
       B.type_desc      AS type_desc  

  FROM sysobjects       AS  A   
  JOIN sys.indexes      AS  B    ON A.id = B.object_id

 WHERE A.xType = 'U'
   AND B.index_id = 0
 ORDER BY A.id, B.type_desc, B.name

 

간단히 설명 드리면 

sys.indexes의 index_id가 0 : heap,  1: clustered index  2>= : non clustered index를 표시합니다.

 

추가로 왜 인덱스를 설정하지 않는 heap 테이블의 경우에도 장점이 존재하지만 따로 힙 테이블로 두어야할 구체적 이유가 없다면 반드시! 클러스터 인덱스를 설정하도록 합시다~

 

해당 테이블에 대한 자세한 정보는 아래 MS Document 참고 부탁드립니다.

 

https://docs.microsoft.com/ko-kr/sql/relational-databases/system-catalog-views/sys-indexes-transact-sql?view=sql-server-ver15

Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.