[sql] 클러스터 인덱스와 넌클러스터 인덱스의 차이점
SQL 데이터베이스에서 인덱스는 데이터 검색과 정렬을 쉽고 빠르게 하기 위한 도구입니다. 인덱스는 테이블에 대한 접근을 효율적으로 만들어주며, 특정 열이나 조건에 따라 데이터를 빠르게 찾을 수 있도록 합니다. 인덱스는 클러스터 인덱스와 넌클러스터 인덱스로 나뉘는데, 이 두 가지 유형은 서로 다른 동작 원리와 특징을 가지고 있습니다.
클러스터 인덱스 (Clustered Index)
- 클러스터 인덱스는 데이터를 물리적으로 정렬된 상태로 저장합니다.
- 테이블당 한 개의 클러스터 인덱스만 생성할 수 있습니다.
- 클러스터 인덱스는 기본 키(primary key) 열에 대해 생성됩니다.
- 기본 키를 기준으로 데이터가 정렬되기 때문에, 클러스터 인덱스를 사용하면 특정 행을 빠르게 찾을 수 있습니다.
- 클러스터 인덱스는 데이터를 실제로 정렬하기 때문에 새로운 행을 추가하거나 삭제할 때 클러스터 재정렬이 발생할 수 있습니다.
- 데이터의 물리적 순서에 따라 저장되기 때문에, 특정 기준에 따라 데이터 조회가 빠를 수도 있지만, 업데이트 작업에 대해서는 성능 저하의 원인이 될 수 있습니다.
넌클러스터 인덱스 (Non-clustered Index)
- 넌클러스터 인덱스는 데이터를 논리적으로 정렬된 상태로 저장합니다.
- 테이블당 여러 개의 넌클러스터 인덱스를 생성할 수 있습니다.
- 넌클러스터 인덱스는 기본 키(primary key)가 아닌 다른 열에 대해 생성됩니다.
- 넌클러스터 인덱스를 사용하면 기본 데이터의 순서는 그대로 유지되고, 인덱스에 대한 별도의 데이터 구조가 생성됩니다.
- 넌클러스터 인덱스는 데이터를 빠르게 탐색할 수 있도록 도와줍니다. 기본 데이터와 인덱스 데이터의 물리적인 위치는 별개이기 때문에, 업데이트 작업에 대한 영향이 적습니다.
- 하지만 인덱스를 통해 특정 행을 찾아가야 하기 때문에, 조건에 따른 데이터 조회에는 클러스터 인덱스에 비해 상대적으로 성능이 떨어지는 경우가 있습니다.
결론
클러스터 인덱스와 넌클러스터 인덱스는 데이터베이스의 테이블에 대한 검색과 정렬을 효율적으로 지원하기 위한 인덱스 유형입니다. 클러스터 인덱스는 데이터를 물리적으로 정렬하여 저장하며, 기본 키에 대해 생성됩니다. 반면 넌클러스터 인덱스는 데이터를 논리적으로 정렬하여 저장하며, 기본 키가 아닌 다른 열에 대해 생성됩니다. 이 두 가지 인덱스는 각각의 특징과 장단점을 가지고 있으므로, 테이블의 특성과 용도에 따라 적절한 인덱스를 선택해야 합니다.
참고자료: