programing

인덱스 온 뷰(Oracle)

sourcejob 2023. 6. 13. 22:13
반응형

인덱스 온 뷰(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

반응형