SQL Server-클러스터형 인덱스와 비 클러스터형 인덱스는 언제 사용합니까?
클러스터형 인덱스와 비 클러스터형 인덱스의 주요 차이점을 알고 있으며 실제로 작동하는 방식을 이해하고 있습니다. 클러스터형 및 비 클러스터형 인덱스가 어떻게 읽기 성능을 향상시키는 지 이해합니다. 그러나 내가 확실하지 않은 한 가지는 내가 다른 하나를 선택하는 이유가 무엇인지입니다.
예 : 테이블에 클러스터형 인덱스가없는 경우 비 클러스터형 인덱스를 만들어야하며 수행 할 때의 이점은 무엇입니까?
경고의 말씀을 드리고 싶습니다. 클러스터형 인덱스를 신중하게 선택하십시오! 모든 "일반"데이터 테이블에는 클러스터형 인덱스가 있어야합니다. 클러스터형 인덱스를 사용하면 실제로 많은 작업 속도가 빨라지기 때문입니다. 예, 속도를 높이고 삽입 및 삭제도 가능합니다! 그러나 좋은 클러스터형 인덱스 를 선택하는 경우에만 가능합니다 .
그것은의 가장 복제 하여 SQL Server 데이터베이스에서 데이터 구조. 클러스터링 키는 테이블에있는 모든 비 클러스터형 인덱스의 일부이기도합니다.
클러스터링 키를 선택할 때는 매우주의해야합니다. 다음과 같아야합니다.
좁음 (4 바이트 이상)
고유합니다 (결국 "행 포인터"입니다. 고유하게 만들지 않으면 SQL Server가 백그라운드에서 자동으로 수행하므로 각 항목에 대해 몇 바이트에 행 수와 클러스터되지 않은 인덱스 수를 곱한 비용이 발생합니다) -이것은 매우 비쌀 수 있습니다!)
정적 (변경하지 않음-가능한 경우)
이상적으로는 계속 증가 하므로 끔찍한 인덱스 조각화로 끝나지 않습니다 (GUID는 특정 이유로 인해 좋은 클러스터링 키의 정반대입니다).
nullable이 아니어야하며 이상적으로는 너비가 고정되어야합니다. a
varchar(250)
는 클러스터링 키를 매우 열악하게 만듭니다.
다른 모든 것은이 점 뒤에있는 두 번째 및 세 번째 중요도 여야합니다.
주제에 대한 Kimberly Tripp ( 인덱싱의 여왕 ) 블로그 게시물 중 일부를 참조하십시오. 그녀가 블로그에 쓴 모든 것은 절대적으로 가치가 있습니다. 읽고, 소화하십시오.
- 기본 키 및 / 또는 클러스터링 키로서의 GUID
- 클러스터형 인덱스 논쟁은 계속됩니다 ...
- 계속 증가하는 클러스터링 키-클러스터형 인덱스 토론 .......... 다시!
- 디스크 공간이 저렴합니다. 그게 요점 이 아닙니다 !
참고 URL : https://stackoverflow.com/questions/18304376/sql-server-when-to-use-clustered-vs-non-clustered-index
'programing' 카테고리의 다른 글
Ruby on Rails 대 ASP.NET MVC 3 for .NET Guy? (0) | 2020.08.22 |
---|---|
20 개의 질문 AI 알고리즘은 어떻게 작동합니까? (0) | 2020.08.22 |
SVG의 고정 획 너비 (0) | 2020.08.22 |
IntelliJ IDEA에서 자동 완성 된 괄호 밖으로 이동하는 방법 (화살표 키를 사용하지 않고)? (0) | 2020.08.22 |
파이썬에서 문자열 연결과 문자열 대체 (0) | 2020.08.22 |