비클러스터형 인덱스 만들기
적용 대상: Microsoft Fabric의 SQL ServerAzure SQL Database Azure SQL Managed Instance SQL 데이터베이스
SQL Server Management Studio 또는 Transact-SQL을 사용하여 SQL Server에서 비클러스터형 인덱스를 만들 수 있습니다. 비클러스터형 인덱스는 하나 이상의 선택한 열을 다시 정렬하는 테이블에 저장된 데이터와 분리된 인덱스 구조입니다. 비클러스터형 인덱스는 종종 기본 테이블을 검색하는 것보다 더 빠르게 데이터를 찾는 데 도움이 될 수 있습니다. 비클러스터형 인덱스의 데이터에 의해 쿼리에 완전히 응답하거나 비클러스터형 인덱스가 데이터베이스 엔진 기본 테이블의 행을 가리킬 수 있습니다. 일반적으로 비클러스터형 인덱스는 클러스터형 인덱스가 적용되지 않는 자주 사용되는 쿼리의 성능을 향상시키거나 클러스터형 인덱스(힙이라고 함)가 없는 테이블에서 행을 찾기 위해 만들어집니다. 테이블 또는 인덱싱된 뷰에 비클러스터형 인덱스를 여러 개 만들 수 있습니다.
시작하기 전에
일반적인 구현 방법
비클러스터형 인덱스는 다음 방법으로 구현합니다.
UNIQUE 제약 조건
UNIQUE 제약 조건을 만들면 기본적으로 UNIQUE 제약 조건을 적용하기 위해 고유한 비클러스터형 인덱스가 만들어집니다. 테이블에 클러스터형 인덱스가 없는 경우 고유 클러스터형 인덱스를 지정할 수 있습니다. 자세한 내용은 Unique Constraints and Check Constraints을 참조하세요.
제약 조건과 무관한 인덱스
클러스터형이 지정되지 않으면 기본값으로 비클러스터형 인덱스가 생성됩니다. 테이블당 만들 수 있는 비클러스터형 인덱스의 최대 수는 999개입니다. 여기에는 PRIMARY KEY 또는 UNIQUE 제약 조건에서 만든 인덱스가 포함되지만 XML 인덱스는 포함되지 않습니다.
인덱싱된 뷰의 비클러스터형 인덱스
뷰에 고유한 클러스터형 인덱스가 생성된 후 비클러스터형 인덱스를 만들 수 있습니다. 자세한 정보는 인덱싱된 뷰 만들기를 참조하세요.
보안
사용 권한
테이블이나 뷰에 대한 ALTER 권한이 필요합니다. 사용자는 sysadmin 고정 서버 역할의 멤버 또는 db_ddladmin 및 db_owner 고정 데이터베이스 역할의 멤버여야 합니다.
SQL Server Management Studio 사용
테이블 디자이너를 사용하여 비클러스터형 인덱스 만들기
개체 탐색기에서 비클러스터형 인덱스를 만들 테이블이 포함된 데이터베이스를 펼칩니다.
테이블 폴더를 확장합니다.
비클러스터형 인덱스를 만들 테이블을 마우스 오른쪽 단추로 클릭하고 디자인을 선택합니다.
비클러스터형 인덱스를 만들 열을 마우스 오른쪽 단추로 클릭하고 인덱스/키를 선택합니다.
인덱스/키 대화 상자에서 추가를 선택합니다.
선택한 기본/고유 키 또는 인덱스 입력란에서 새 인덱스를 선택합니다.
표에서 CLUSTERED로 만들기를 선택하고 속성 오른쪽에 있는 드롭다운 목록에서 아니요를 선택합니다.
닫기를 선택합니다.
파일 메뉴에서 table_name 저장을 선택합니다.
개체 탐색기를 사용하여 비클러스터형 인덱스를 만들려면
개체 탐색기에서 비클러스터형 인덱스를 만들 테이블이 포함된 데이터베이스를 펼칩니다.
테이블 폴더를 확장합니다.
비클러스터형 인덱스 만들 테이블을 펼칩니다.
인덱스 폴더를 마우스 오른쪽 단추로 클릭하고 새 인덱스를 가리킨 다음 비클러스터형 인덱스...를 선택합니다.
새 인덱스 대화 상자의 일반 페이지에서 인덱스 이름 상자에 새 인덱스의 이름을 입력합니다.
인덱스 키 열 아래에서 추가...를 선택합니다.
table_name에서 열 선택 대화 상자에서 비클러스터형 인덱스에 추가할 테이블 열의 확인란을 선택합니다.
확인을 선택합니다.
새 인덱스 대화 상자에서 확인을 선택합니다.
Transact-SQL 사용
Transact-SQL을 사용하여 테이블에 비클러스터형 인덱스 만들기
개체 탐색기에서
AdventureWorks2022
가 설치된 데이터베이스 엔진의 인스턴스에 연결합니다. 샘플 데이터베이스에서AdventureWorks2022
를 다운로드 할 수 있습니다.표준 도구 모음에서 새 쿼리를 선택합니다.
다음 예시를 복사하여 쿼리 창에 붙여넣고 실행을 선택합니다.
USE AdventureWorks2022; GO -- Find an existing index named IX_ProductVendor_VendorID and delete it if found. IF EXISTS (SELECT name FROM sys.indexes WHERE name = N'IX_ProductVendor_VendorID') DROP INDEX IX_ProductVendor_VendorID ON Purchasing.ProductVendor; GO -- Create a nonclustered index called IX_ProductVendor_VendorID -- on the Purchasing.ProductVendor table using the BusinessEntityID column. CREATE NONCLUSTERED INDEX IX_ProductVendor_VendorID ON Purchasing.ProductVendor (BusinessEntityID); GO