클러스터형 인덱스 탐색과 비 클러스터형 인덱스 탐색의 차이점


10

CI (Clustered Index) 탐색과 NCI (Non Clustered Index) 탐색의 차이점은 무엇입니까? 하나는 다른 것보다 더 잘 수행됩니까?

내가 묻는 이유는 5 천만 개의 행과 150 개의 열이있는 테이블이 있기 때문입니다. ID클러스터형 인덱스로 정의 된 열이 있습니다 . 동일한 인덱스 키 ID와 7 개의 included 열을 가진 NCI가 하나 더 있습니다. NC 인덱스가 여기에 중복되어 안전하게 삭제할 수있는 것 같습니다.

안전하게 떨어 뜨릴 수 있거나 그대로 유지 해야하는 전문가의 견해 / 조언이 필요합니까?


모든 열이 클러스터되지 않은 인덱스에 포함되어 있다고 말하고 있습니까?
Ian Ringrose

아니요.이 테이블에는 ID 열이 CI로 정의 된 150 개의 열이 있으며 인덱스 키로 다시 ID 열이 포함 된 NCI 인덱스와 7 개의 추가 열이 포함되어 있습니다.
SQLPRODDBA

그런 다음 Paul White가 정답을 준 것처럼 보이지만 "기본"테이블을 클러스터 된 테이블에서 힙으로 변경해야하는지에 대한 의문이 있습니다. 또는 트랜잭션 로깅 비용을 줄이기 위해 서로 다른 열이 얼마나 자주 업데이트되는지에 따라 테이블을 분할 할 수도 있습니다.
Ian Ringrose

답변:


26

비 클러스터형 인덱스는 일반적으로 더 작고 밀도가 높기 때문에 클러스터형 인덱스와 동일한 키 *를 가진 비 클러스터형 인덱스가 여전히 유용 할 수 있습니다. 클러스터형 인덱스에는 모든 행 내 데이터가 포함되므로 일반적으로 가능한 가장 넓은 (가장 조밀 한) 인덱스입니다.

* 동일한 키 열이 동일한 순서로 동일한 방식으로 정렬되었습니다 (asc / desc).

싱글 톤 탐색 (등호 술어를 고유 인덱스로 사용하는 탐색)의 경우, 주요 차이점은 단일 레코드가 이미 메모리에 있음을 찾는 데 필요한 인덱스 페이지의 가능성이 더 크다는 것입니다. 100 페이지의 비 클러스터형 인덱스는 10,000 페이지에 저장된 클러스터형 인덱스보다 모든 것이 동일합니다.

싱글 톤을 제외한 다른 종류의 탐색에는 스캔 구성 요소도 있습니다. 스캔 부분은 더 높은 밀도의 비 클러스터형 인덱스 (페이지 당 더 많은 행)에서 이점을 얻을 수 있습니다. 페이지가 영구 저장소에서 들어와야하더라도 더 적은 페이지를 읽는 것이 더 빠릅니다.

시스템 설명서를 확인하고 색인을 추가 한 사람에게 요청하거나 코드 색인을 찾아서이 색인이 존재하는 이유를 이해해야합니다. 또한 압축을 포함 하여 전체 색인 정의를 신중하게 확인하고 색인 유지 보수 스크립트를 살펴보십시오. 비 클러스터형 인덱스가있는 다른 특별한 이유가있을 수 있습니다 (예 : 온라인 재 구축 기능).

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.