2009-02-22 2 views

답변

3

Microsoft에 따르면 인덱스의 SQL Server 2000/2005/2008에서 인덱스를 사용하면 성능이 저하 될 수 있습니다.

인덱싱 된 뷰는 다음과 같은 방법으로 쿼리 성능을 높일 수 있습니다. 1. 집계를 미리 계산하여 인덱스에 저장하면 쿼리 실행 중 비용이 많이 드는 계산을 최소화 할 수 있습니다.
2. 테이블을 사전 조인하고 결과 데이터 세트를 저장할 수 있습니다.
. 조인 또는 집계의 조합을 저장할 수 있습니다.

테이블의 인덱스와 마찬가지로 뷰의 인덱스는 수정 오버 헤드를 경험합니다. 따라서 실행 속도가 향상되어보기 색인을 업데이트하는 데 걸리는 시간을 초과하는 경우에만 색인을보기에 추가하십시오.

아래 링크는이 기능에 대한 자세한 정보를 제공합니다.

  1. SQL Server 2000/2005 Indexed View Performance Tuning and Optimization Tips.
  2. Improving Performance with SQL Server 2000 Indexed View.
  3. See performance gains by using indexed views in SQL.
+2

이 기사를 자세히 읽는다면 실제로는 특별한 형태의 표를 만드는 또 다른 동물 인 "구체화 된보기"에 대해 이야기하고 있음을 알 수 있습니다. – dkretz

1

대부분의 데이터베이스에서 기능적으로 서로 바꿔서 사용할 수 있습니다. (실제로는 전혀 다른 어떤 구체화 된 뷰를 무시하십시오.) 뷰를 생성하는 일반적인 두 가지 이유가 있습니다. 1. 추상화 (및 컬럼 앨리어싱) 메커니즘, 2. 권한 및 액세스 제어. 그러나 효율면에서 문제는 아닙니다. 그것의

+1

사실이 아닙니다. 일부 데이터베이스는보기가 중첩 될 때 성능 문제가 있습니다. –

+0

그리고 참조가 있으십니까? 그럴 가능성은 희박합니다. (그렇기 때문에 "대부분의 데이터베이스에서"라고 말한 것입니다.) – dkretz

+0

예. Oracle에서는 중첩 된 뷰가 잘못 작동 할 수 있습니다. 확장 된 쿼리와 Oracle 내부의 다중 뷰로 정의 된 동일한 쿼리를 비교할 때이 점을 직접 경험했습니다. –

0

생각해이 방법 :

뷰가 서버에 거주하고 SQL 엔진에 의해 컴파일 된 단지 선택 문입니다.

일반적으로보기는 테이블 결과를 제한/단순화하는 데 사용됩니다.

감사 K

1

그것은 데이터베이스와 뷰의 정의에 따라 달라집니다.

별칭 열 또는 간단한 계산을 수행하는 단순보기는 쿼리를 직접 작성하는 것과 다르지 않습니다.

그러나보기가 훨씬 느려질 수 있습니다. 예 : Oracle에서 뷰 쿼리를 너무 많이 중첩하면 (예 : 하나의 뷰가 다른 뷰를 다른 테이블을 다른 테이블을 사용하는 테이블, 다른 테이블을 다른 테이블로 사용함) 끔찍한 성능을 생성 할 수 있습니다.

일반적으로 특정 데이터베이스와 질문을 테스트해야합니다.

+0

뷰를 사용하면 쿼리가 나타내는 인라인 부속 선택보다 쿼리 속도가 느려지습니까? – Khb

+0

비효율적 인 경우보기가 부적절하게 필요한 것보다 많은 필드 및/또는 조인을 추가하기 때문일 수 있습니다. 그러나 여전히 동일한 단일 SQL 문과 동일한 성능입니다. – dkretz

+1

아니요,보기 또는 하위 쿼리가있는 선택에서 SAME 쿼리를 사용해 보았습니다. 후자는 훨씬 더 빠를 수 있습니다. 왜? Dunno, Oracle은 신비로 가득 차 있지만 좋은 방법은 아닙니다. –