2010-01-08 5 views
1

공급 업체로부터 라이센스가 부여 된 데이터가 포함 된 대형 테이블 (6m 레코드)이 있습니다. 이 테이블에는 Y/N 값이있는 NVARCHAR2 (1) 열이 있습니다. 'N'값으로 레코드를 필터링하는보기를 만들었으며이보기는 광범위하게 쿼리됩니다. NVARCHAR2 (1) 열을 인덱싱하는 가장 좋은 방법은 무엇입니까?Oracle에서 Y/N 열을 색인하는 방법

답변

8

는 무엇입니까 Y/N 비율? 레코드가 업데이트되어 Y/N 및/또는 N/Y로 이동합니까? 그렇다면 정기적으로 (예 : 재고/품절/재고/품절) 또는 1 회 처리 (미처리/처리)로 발생합니까?

항목이 섞여 있고 짝수 비율이있는 경우 색인이 도움이되지 않습니다.

N에서 N을 나눌 수있는 파티셔닝 (라이센스가있는 경우)을 사용할 수 있습니다. 구체화 된 뷰를 만들거나 테이블을 두 테이블 (UNSTEAD OF 트리거가있는 경우)의 UNION ALL 뷰로 만들면 N에서 Y도 나눌 수 있습니다. 이 모든 것들이 프로세싱을 업데이트하기 위해 벌금이 부과 될 것입니다.

열이 많은 업데이트 작업을 얻지 못할 경우 비트 맵 인덱스가 적합 할 수 있습니다.

CASE WHEN 플래그 = 'Y', 'Y'끝에서 함수 기반 인덱스를 가질 수 있습니다. 인덱스에서 N 값을 제외하면 훨씬 더 작아집니다.

+0

+1 게리 (Gary)는 관련 문제의 대부분을 다루었습니다. 또한 일반적인 쿼리에는 선택적인 열을 필터링하는 것이 포함되어있어 필요한 인덱싱을 나타낼 수도 있습니다. – dpbradley

+0

약 50/50은 Y와 N 값을 나눕니다. 데이터는 본질적으로 "업데이트"되지 않지만 공급 업체가 주기적으로 최신 정보를 배포함에 따라 데이터 세트를 대체합니다. –

0

아마도 구체화 된보기를 사용할 수 있습니까? 그러면 모든 쿼리가 더 작은 'Y'전용 테이블에서 작동합니다.

관련 문제