인덱스 온 뷰(Oracle)
두 개의 테이블이 있다고 치자,tab_a그리고.tab_b.
다음과 같은 보기를 만듭니다.
create view join_tabs as
(
select col_x as col_z from tab_a
union
select col_y as col_z from tab_b
);
그리고 내가 다음을 한다면,
select * from join_tabs where col_z = 'BLAH';
한다면tab_a색인col_x그리고.tab_b색인col_y우리는 이것을 두 개의 색인 검색으로 할 수 있을 것입니다.
그러나 소스 테이블이 ()일 경우 자동으로 업데이트되는 방식으로 하나의 인덱스에 두 테이블 모두에 대한 인덱스를 만들거나 뷰를 인덱싱할 수 있다면 좋을 것입니다.tab_a또는tab_b) 변경.
오라클에서 이 작업을 수행할 수 있는 방법이 있습니까?
저는 Oracle과 비슷한 수준은 아니지만 Materialized Views가 정확히 그렇게 한다고 생각합니다.
구체화된 뷰에 대한 인덱스 선택
구체화된 보기에서 가장 일반적인 두 가지 작업은 쿼리 실행과 빠른 새로 고침이며, 각 작업에는 서로 다른 성능 요구 사항이 있습니다.쿼리 실행은 구체화된 보기 키 열의 하위 집합에 액세스해야 하며, 이러한 열의 하위 집합에 결합하여 집계해야 할 수도 있습니다.따라서 일반적으로 쿼리 실행은 구체화된 각 보기 키 열에 단일 열 비트맵 인덱스가 정의된 경우에 가장 잘 수행됩니다.
빠른 새로 고침을 사용하여 조인만 포함하는 구체화된 보기의 경우, 새로 고침 작업의 성능을 향상시키기 위해 행 ID가 포함된 열에 인덱스를 만드는 것이 좋습니다.
Aggregate를 사용하여 구체화된 보기를 빠르게 새로 고칠 수 있는 경우, CREATE Materialized View 문에 색인을 지정하지 않은 경우 색인이 자동으로 작성됩니다.
뷰는 일부 테이블의 마스크에 불과하므로 뷰에 인덱스를 작성할 수 없습니다.이렇게 하려면 @Lieven에서 지정한 대로 구체화된 뷰를 작성하고 그 위에 인덱스를 작성합니다.
언급URL : https://stackoverflow.com/questions/6531564/index-on-view-oracle
'programing' 카테고리의 다른 글
| x86과 x64의 동일한 페이지 내에서 버퍼의 끝을 지나서 읽는 것이 안전합니까? (0) | 2023.06.13 |
|---|---|
| 후행 0.0을 자릅니다. (0) | 2023.06.13 |
| https://settings.crashlytics.com/spi/v2/platforms/android/apps/ 에서 설정을 검색하지 못했습니다. (0) | 2023.06.08 |
| 각도 형식 필드를 수동으로 유효하지 않게 설정하려면 어떻게 해야 합니까? (0) | 2023.06.08 |
| Xcode 7의 "변환 전용 계층에서 속성 마스크 ToBounds 변경, 영향을 미치지 않음" (0) | 2023.06.08 |