클러스터형 인덱스와 비 클러스터형 인덱스의 주요 차이점을 알고 있으며 실제로 작동하는 방식을 이해하고 있습니다. 클러스터형 및 비 클러스터형 인덱스가 어떻게 읽기 성능을 향상시키는 지 이해합니다. 그러나 내가 확실하지 않은 한 가지는 내가 다른 하나를 선택하는 이유가 무엇인지입니다.
예 : 테이블에 클러스터형 인덱스가없는 경우 비 클러스터형 인덱스를 만들어야하며 수행 할 때의 이점은 무엇입니까?
클러스터형 인덱스와 비 클러스터형 인덱스의 주요 차이점을 알고 있으며 실제로 작동하는 방식을 이해하고 있습니다. 클러스터형 및 비 클러스터형 인덱스가 어떻게 읽기 성능을 향상시키는 지 이해합니다. 그러나 내가 확실하지 않은 한 가지는 내가 다른 하나를 선택하는 이유가 무엇인지입니다.
예 : 테이블에 클러스터형 인덱스가없는 경우 비 클러스터형 인덱스를 만들어야하며 수행 할 때의 이점은 무엇입니까?
답변:
경고의 말씀을 드리고 싶습니다. 클러스터형 인덱스를 신중하게 선택하십시오! 모든 "일반"데이터 테이블에는 클러스터형 인덱스가 있어야합니다. 클러스터형 인덱스를 사용하면 실제로 많은 작업 속도가 빨라지기 때문입니다. 예, 속도를 높이고 삽입 및 삭제도 가능합니다! 그러나 좋은 클러스터형 인덱스 를 선택하는 경우에만 가능합니다 .
그것은의 가장 복제 하여 SQL Server 데이터베이스에서 데이터 구조. 클러스터링 키는 테이블에있는 모든 비 클러스터형 인덱스의 일부이기도합니다.
클러스터링 키를 선택할 때는 매우주의해야합니다. 다음과 같아야합니다.
좁음 (4 바이트 이상)
고유합니다 (결국 "행 포인터"입니다. 고유하게 만들지 않으면 SQL Server가 백그라운드에서 자동으로 수행하므로 각 항목에 대해 몇 바이트에 행 수와 클러스터되지 않은 인덱스 수를 곱한 비용이 발생합니다) -이것은 매우 비쌀 수 있습니다!)
정적 (변경하지 않음-가능한 경우)
이상적으로는 계속 증가 하므로 끔찍한 인덱스 조각화로 끝나지 않습니다 (GUID는 특정 이유로 인해 좋은 클러스터링 키의 정반대입니다).
nullable이 아니어야하며 이상적으로는 너비가 고정되어야합니다. a varchar(250)
는 클러스터링 키를 매우 열악하게 만듭니다.
다른 모든 것은이 점 뒤에있는 두 번째 및 세 번째 중요도 여야합니다.
주제에 대한 Kimberly Tripp ( 인덱싱의 여왕 ) 블로그 게시물 중 일부를 참조하십시오. 그녀가 블로그에 쓴 모든 것은 절대적으로 가치가 있습니다. 읽고, 소화하십시오.
non clustered
인덱스는 우리에게 어떤 역할을 하나요? 그 중요성은 무엇입니까 ..?