DBMS 2

DA, SQL, DB보안 등 실무자를 위한 위한 DB기술 바이블!

SQL Server 2005의 인덱싱된 뷰가 제공하는 새로운 기능

DBMS 2
MS-SQL 가이드
MS-SQL 2005 인덱싱된 뷰를 통한 성능 향상
SQL Server 2005의 인덱싱된 뷰가 제공하는 새로운 기능
작성자
admin
작성일
2021-02-18 14:41
조회
493

SQL Server 2005의 인덱싱된 뷰가 제공하는 새로운 기능

SQL Server 2005는 SQL Server 2000보다 인덱싱된 뷰를 위한 많은 향상된 기능이 포함되어 있습니다. 인덱스 가능한 뷰 세트는 다음을 토대 로 향상된 기능을 포함하도록 확장되었습니다.


  • GROUP BY 없이 SUM 및 COUNT_BIG를 포함한 스칼라 집계
  • 스칼라 표현식 및 UDF(User-Defined Functions). 예를 들어 테이블 T(a int, b int, c int)와 스칼라 UDF dbo.MyUDF(@x int)가 주어진 경우 T에서 정의된 인덱싱된 뷰에는 a+b나 dbo.MyUDF(a) 같이 계산된 열이 포함될 수 있습니다.
  • 지속되는 정확하지 않은 열. float 또는 real 유형의 열이나, float 또는 real 열에서 추론된 계산된 열이 부정확한 열에 해당됩니다. SQL Server 2000에서는 인덱스 키에 포함되지 않은 경우, 인덱싱된 뷰의 select 목록에서 부정확한 열을 사용할 수 있었지만 WHERE 또는 FROM 구문 등과 같은 뷰 정의 내 다른 부분에서는 사용할 수 없었습니다. SQL Server 2005에서는 해당 열이 기본 테이블에서 지속되는 경우, 키나 뷰정의 내부에 포함시킬 수 있도록 했습니다. 지속적 열에는 일반 열과 PERSISTED라고 표시된 계산된 열이 포함됩니다.
  • 부정확하며 지속되지 않는 열이 인덱스나 인덱싱된 뷰에 포함될 수 없는 근본적인 이유는 한 시스템에서 데이터베이스 연결을 해제하고 다 른 시스템으로 연결할 수 있어야 하기 때문입니다. 이동한 후 새 하드웨어에서도 기존 하드웨어와 동일한 방식으로 인덱스나 인덱싱된 뷰에 저장된 계산된 모든 열 값을 개별 비트까지 추론할 수 있어야 합니다. 그렇지 않으면 새로운 하드웨어에서 인덱싱된 뷰는 논리적으로 손실될 수 있습니다. 이러한 손실 문제 때문에 새 하드웨어에서 인덱싱된 뷰에 대한 쿼리가 뷰 데이터 추론을 위해 쿼리 계획에서 인덱싱된 뷰를 사용하느냐 기본 테이블을 사용하느냐에 따라 서로 다른 답변을 반환할 수 있었습니다. 뿐만 아니라 인덱싱된 뷰는 새로운 시스템 상에서 제대로 유지될 수 없었습니다. 불행히도 서로 다른 시스템(같은 제조업체의 동일한 프로세서 아키텍처를 기반으로 하더라도)상의 부동 소수점 하드웨어는 프로세서 버전에 따라 달라질 수 있습니다. 일부 부동 소수점 값인 a와 b에서 새 하드웨어의 (a*b)는 기존 하드웨어의 (a*b)와 같지 않기 때문에 펌웨어 업그레이드가 필요합니다. 예를 들어 결과값이 아무리 유사하다 하더라도 LSB(Least Significant Bit)는 서로 다릅니다. 모든 표현식은 데이터베이스 업데이트와 인덱스/인덱싱된 뷰의 유지 관리를 수행하는 동안 같은 시스템상에서 평가되기 때문에, 인덱싱에 앞서 부정확한 계산 값을 지속하여 이러한 연결 해제/연결 불일치 문제를 해결할 수 있습니다.
  • CLR(Common Language Runtime) 유형. SQL Server 2005에서 새로 선보이는 주요 기능으로 CLR 기반의 UDT(User-defined Types)와 UDF 지원을 들 수 있습니다. 열이나 표현식이 명확하고 정확하며 지속적이라면 CLR UDT 열이나 이들 열에서 추론된 표현식에서 인덱싱된 뷰를 정의할 수 있습니다. CLR 사용자 정의 집계는 인덱싱된 뷰에서 사용할 수 없습니다.

쿼리를 인덱싱된 뷰에 일치시키고 쿼리 계획에서 이를 사용할 수 있도록 하는 최적화 프로그램 기능은 다음을 포함할 수 있도록 확장되었습니다.


  • 쿼리/뷰의 SELECT 목록이나 조건의 새로운 표현식 유형에는 다음이 포함됩니다.
    - (a+b)/2 같은 스칼라 표현식
    - 스칼라 집계
    - 스칼라 UDF
  • 간격 포함. 최적화 프로그램은 인덱싱된 뷰 정의의 간격 조건에 해당되는 범위를 탐지하거나 쿼리에 간격 조건을“포함“할 수 있습니다. 예를 들어, 최적화 프로그램은“a>10 및 a<20”가“a>12 및 a<18”을 포함한다고 판단할 수 있습니다.
  • 표현식 동치. 구문상 다르더라도 동일하게 보일 수 있는 특정 표현식은 동일하게 처리됩니다. 예를 들어,“ a=b 및 c<>10”은“10<>c 및 b=a”와 동치로 간주됩니다.

또한 데이터베이스에 많은 수의 인덱싱된 뷰가 있을 경우, 뷰가 정의된 테이블의 컴파일 성능은 일반적으로 SQL Server 2000 보다는 SQL Server 2005가 훨씬 우수합니다.