클러스터형 인덱스 디자인 지침

클러스터형 인덱스는 그 키 값에 기반하여 테이블에 데이터 행을 정렬하고 저장합니다. 데이터 행은 자체적으로 하나의 순서로만 정렬될 수 있으므로 테이블당 클러스터형 인덱스가 하나만 있을 수 있습니다. 클러스터형 인덱스 아키텍처에 대한 자세한 내용은 클러스터형 인덱스 구조를 참조하십시오.

일부 예외를 제외하고는 각 테이블에서 클러스터형 인덱스가 정의된 열은 다음과 같은 특성을 가져야 합니다.

  • 자주 사용하는 쿼리에 대해 사용할 수 있습니다.

  • 높은 수준의 고유성을 제공합니다.

    [!참고] PRIMARY KEY 제약 조건을 만들 때는 열에 고유 인덱스가 자동으로 생성됩니다. 기본적으로 이 인덱스는 클러스터링되지만 제약 조건을 만들 때 비클러스터형 인덱스로 지정할 수 있습니다.

  • 범위 쿼리에서 사용할 수 있습니다.

클러스터형 인덱스가 UNIQUE 속성으로 생성되지 않는 경우 데이터베이스 엔진 은 4바이트 uniqueifier 열을 테이블에 자동으로 추가합니다. 필요한 경우 데이터베이스 엔진 은 uniqueifier 값을 자동으로 행에 추가하여 각 키를 고유하게 만듭니다. 이 열과 해당 값은 내부적으로 사용되며 사용자는 보거나 액세스할 수 없습니다.

쿼리 고려 사항

클러스터형 인덱스를 만들기 전에 데이터가 액세스되는 방식을 이해해야 합니다. 다음을 수행하는 쿼리에는 클러스터형 인덱스를 사용하십시오.

  • BETWEEN, >, >=, < 및 <= 등의 연산자를 사용하여 일정한 범위의 값을 반환합니다.
    클러스터형 인덱스를 사용하여 첫 번째 값을 가진 행을 찾으면 다음의 인덱싱된 값은 반드시 물리적으로 인접해 있습니다. 예를 들어 쿼리가 일정한 범위의 판매 주문 번호 간의 레코드를 검색하는 경우 SalesOrderNumber 열의 클러스터형 인덱스는 시작 판매 주문 번호가 포함된 행을 빠르게 찾은 후 마지막 판매 주문 번호에 도달할 때까지 테이블의 모든 연속된 행을 검색합니다.
  • 큰 결과 집합을 반환합니다.
  • JOIN 절을 사용하며 일반적으로 외래 키 열입니다.
  • ORDER BY 또는 GROUP BY 절을 사용합니다.
    ORDER BY 또는 GROUP BY 절에 지정된 열에서 인덱스를 만들면 행이 이미 정렬되어 있기 때문에 데이터베이스 엔진 이 데이터를 정렬할 필요가 없습니다. 따라서 쿼리 성능도 향상됩니다.

열 고려 사항

특별한 상황이 아니라면 클러스터형 인덱스 키를 가능한 적은 열로 정의해야 합니다. 다음 중 하나 이상의 특성이 있는 열을 고려하십시오.

  • 고유한 열이거나 고유한 값이 많음
    예를 들어 직원 ID는 직원을 고유하게 나타냅니다. EmployeeID 열에 클러스터형 인덱스나 PRIMARY KEY 제약 조건을 적용하면 직원 ID 번호로 직원 정보를 검색하는 쿼리 성능이 향상됩니다. 또는 LastName, FirstName, MiddleName에 클러스터형 인덱스를 생성할 수 있는데 이는 직원 레코드가 이러한 방법으로 자주 그룹화 및 쿼리되기 때문이며, 이러한 열을 결합하더라도 높은 수준의 고유성을 제공합니다.
  • 순차적인 액세스
    예를 들어 AdventureWorks 데이터베이스에서 제품 ID는 Production.Product 테이블의 제품을 고유하게 나타냅니다. WHERE ProductID BETWEEN 980 and 999과 같이 순차 검색이 지정된 쿼리라면 ProductID에 클러스터형 인덱스를 사용하는 것이 좋습니다. 이는 해당 키 열에 행이 정렬되어 저장되기 때문입니다.
  • 열은 테이블 내에서 고유하기 때문에 IDENTITY로 정의됩니다.
  • 테이블에서 검색된 테이터를 정렬하는 데 자주 사용됨
    해당 열의 테이블을 클러스터링, 즉 물리적으로 정렬하면 열을 쿼리할 때마다 정렬 작업 비용을 줄일 수 있습니다.

다음과 같은 특성에는 클러스터형 인덱스를 사용하지 않는 것이 좋습니다.

  • 자주 변경되는 열
    데이터베이스 엔진 이 행의 데이터 값을 물리적인 순서로 보관해야 하기 때문에 열이 자주 변경되면 전체 행이 이동됩니다. 다음은 일반적으로 데이터가 불안정한 대량 트랜잭션 처리 시스템에서 고려해야 할 사항입니다.
  • 다양한 키
    다양한 키는 여러 열 또는 크기가 큰 여러 열이 합쳐진 것입니다. 클러스터형 인덱스로 구한 키 값은 모든 비클러스터형 인덱스에 의해 조회 키로 사용됩니다. 비클러스터형 인덱스 항목에는 클러스터링 키와 함께 해당 비클러스터형 인덱스에 대해 정의된 키 열도 포함되기 때문에 동일한 테이블에 정의된 비클러스터형 인덱스가 훨씬 큽니다.

인덱스 옵션

클러스터형 인덱스를 만들 때는 여러 가지 인덱스 옵션을 지정할 수 있습니다. 일반적으로 클러스터형 인덱스가 훨씬 크기 때문에 다음 옵션을 특히 고려해야 합니다.

  • SORT_IN_TEMPDB
  • DROP_EXISTING
  • FILLFACTOR
  • ONLINE

자세한 내용은 인덱스 옵션 설정을 참조하십시오.

참고 항목

개념

클러스터형 인덱스 만들기
인덱스 만들기(데이터베이스 엔진)
PRIMARY KEY 제약 조건 만들기 및 수정
일반 인덱스 디자인 지침
고유 인덱스 디자인 지침

도움말 및 정보

SQL Server 2005 지원 받기