programing

SQL Server-클러스터형 인덱스와 비 클러스터형 인덱스는 언제 사용합니까?

nasanasas 2020. 8. 22. 09:00
반응형

SQL Server-클러스터형 인덱스와 비 클러스터형 인덱스는 언제 사용합니까?


클러스터형 인덱스와 비 클러스터형 인덱스의 주요 차이점을 알고 있으며 실제로 작동하는 방식을 이해하고 있습니다. 클러스터형 및 비 클러스터형 인덱스가 어떻게 읽기 성능을 향상시키는 지 이해합니다. 그러나 내가 확실하지 않은 한 가지는 내가 다른 하나를 선택하는 이유가 무엇인지입니다.

예 : 테이블에 클러스터형 인덱스가없는 경우 비 클러스터형 인덱스를 만들어야하며 수행 할 때의 이점은 무엇입니까?


경고의 말씀을 드리고 싶습니다. 클러스터형 인덱스를 신중하게 선택하십시오! 모든 "일반"데이터 테이블에는 클러스터형 인덱스가 있어야합니다. 클러스터형 인덱스를 사용하면 실제로 많은 작업 속도가 빨라지기 때문입니다. 예, 속도를 높이고 삽입 및 삭제도 가능합니다! 그러나 좋은 클러스터형 인덱스 를 선택하는 경우에만 가능합니다 .

그것은의 가장 복제 하여 SQL Server 데이터베이스에서 데이터 구조. 클러스터링 키는 테이블에있는 모든 비 클러스터형 인덱스의 일부이기도합니다.

클러스터링 키를 선택할 때는 매우주의해야합니다. 다음과 같아야합니다.

  • 좁음 (4 바이트 이상)

  • 고유합니다 (결국 "행 포인터"입니다. 고유하게 만들지 않으면 SQL Server가 백그라운드에서 자동으로 수행하므로 각 항목에 대해 몇 바이트에 행 수와 클러스터되지 않은 인덱스 수를 곱한 비용이 발생합니다) -이것은 매우 비쌀 수 있습니다!)

  • 정적 (변경하지 않음-가능한 경우)

  • 이상적으로는 계속 증가 하므로 끔찍한 인덱스 조각화로 끝나지 않습니다 (GUID는 특정 이유로 인해 좋은 클러스터링 키의 정반대입니다).

  • nullable이 아니어야하며 이상적으로는 너비가 고정되어야합니다. a varchar(250)는 클러스터링 키를 매우 열악하게 만듭니다.

다른 모든 것은이 점 뒤에있는 두 번째 및 세 번째 중요도 여야합니다.

주제에 대한 Kimberly Tripp ( 인덱싱의 여왕 ) 블로그 게시물 중 일부를 참조하십시오. 그녀가 블로그에 쓴 모든 것은 절대적으로 가치가 있습니다. 읽고, 소화하십시오.

참고 URL : https://stackoverflow.com/questions/18304376/sql-server-when-to-use-clustered-vs-non-clustered-index

반응형