인덱싱 된 뷰를 사용하여 가장 일반적으로 사용되는 몇 가지 뷰의 성능을 향상시키는 방법을 찾고 있습니다.
그러나 인덱싱 된 뷰는 고유하지 않은 클러스터형 인덱스를 지원하지 않으므로 나머지 데이터베이스 구조에서 설정 한 우선 순위와는 약간 다릅니다.
예를 들어, 다음은 몇 가지 테이블의 단순화 된 버전입니다.
-Groups-
Group ID GroupName
-Users-
UserKey UserName FullName GroupID
인덱스는 Groups.GroupID (비 클러스터형) 및 Users.GroupID (클러스터형)에 있습니다. 가장 일반적으로 특정 그룹의 사용자 범위가 검색 될 때 Users 테이블의 GroupID에있는 클러스터 키. 분명히 그룹당 여러 명의 사용자가 있으므로이 클러스터형 인덱스는 고유하지 않습니다.
고유하지 않은 클러스터형 인덱스를 가질 수 없으므로이 예제와 같은 뷰를 인덱싱 할 때이 우선 순위를 따르는 방법을 잘 모릅니다.
ConsumableID ConsumableVariantID AllowThresholdOverwrite FullPath GroupID ManufacturerID Type ModelID
101 29 1 0.1.2.4. 4 3 3 2
실제로이 View에서 항상 고유 한 유일한 값은 ConsumableID 열이므로 인덱스를 배치 할 위치를 거의 선택할 수 없습니다.
일반 테이블에서 뷰가 고유하지 않은 클러스터형 인덱스를 허용하지 않는 이유는 무엇입니까?
(GroupID, UserID)
. 키의 단일 열로 제한하지 마십시오. 2-뷰의 한계는 행이 NC 인덱스에 쉽게 묶여 있어야하는 보충 데이터 개체이기 때문이라고 생각합니다. 테이블의 경우 고유하지 않은 CI 키에 정수가 추가되지만 실제 테이블이 아니지만 실제 테이블을 반영해야하기 때문에 인덱싱 된 뷰에서는 더 어려울 것이라고 생각합니다.