2009-10-06 3 views
2

SQL Server View 인덱스가 어떻게 작동합니까? 나는 이것을 TechNet article으로 읽었지만 뷰 인덱스가 실제로 어떻게 작동하는지 설명하지 않습니다. 아무도 나에게 이것을 설명 할 수 있습니까?SQL Server보기 인덱스가 어떻게 작동합니까?

참고 : 이것이 SF에 있어야하는지 확실하지 않습니다. 필요한 경우 그냥 그 곳으로 이동하십시오.

답변

3

쿼리 컴파일 중에 SQL 컴파일러는 메타 데이터에서 인덱싱 된 뷰 정의를보고 테이블과 함께 인덱싱 된 뷰 데이터를 유지 관리하는 실행 계획을 생성합니다. 예 :

create table foo (a int not null, 
    constraint pkfoo primary key (a)) 
GO 

create view vFoo 
with schemabinding 
as 
select a from dbo.foo 
GO 

create unique clustered index cdxvFoo on vFoo(a) 
GO 

insert into foo (a) values (1); 
GO 

당신은 당신이 클러스터 된 인덱스 삽입의 foo.pkFoo에 하나 vFoo.cdxvFoo에 하나 포함되어 있음을 볼 수 있습니다 INSERT 문의 실행 계획을 보면. 삭제 또는 업데이트와 비슷합니다.

1

적절한 답을 얻으려면 몇 가지 코스 노트를 참조해야합니다. 인덱스 된 뷰에 행 수가 포함되어 있으며 기본 테이블의 변경 내용을 기반으로 사전 집계 된 데이터가 업데이트된다는 것을 기억합니다. (일반 색인처럼)

삽입 및 업데이트 및 삭제를 처리 할 수 ​​있도록 특별히 합계와 개수가 포함되어 있습니다. (합계와 개수를 조정 한 다음 결과를 나타냅니다). 이렇게하면 뷰는 평균 (합계/집계)을 출력 할 수 있지만 평균을 저장하지는 않습니다. 새 데이터를 가져올 때이를 조정할 수있는 방법이 없기 때문입니다.

내가 기억하는 한, 색인 된보기는 B- 트리, 데이터 페이지를 사용하는 일반 색인과 동일하게 저장되며 자체 IAM을가집니다.

나는 모두 머리 위로 기억하고 있습니다.

관련 문제