2012-08-10 4 views
1

Oracle 11g에는 테이블 Customer_Chronics이 있습니다. 아래 그림과 같이 표는 세 ​​가지 주요 열이 있습니다Oracle 분할 테이블의 고유 인덱스

  • branch_code
  • CUSTOMER_ID
  • 기간

내가 branch_code의리스트 테이블로 분할 한 지금은 딜레마에 봉착했습니다. 어느 것이 더 낫다 :

  1. Customer_Chronics (PERIOD, CUSTOMER_ID)에서 고유 색인 indexNumberOne을 작성하십시오.
  2. Customer_Chronics (unique_code, PERIOD, CUSTOMER_ID)에서 고유 색인 indexNumberTwo를 작성하십시오.

실제 데이터는 period, customer_id으로 고유해야합니다. 이 두 열에 만 고유 인덱스를 삽입하면 오라클은 새 레코드를 삽입 할 때 테이블의 모든 파티션을 검사합니다.

답변

2

고유성을 적용하는 유일한 방법은 관심있는 열에 고유 한 제한 조건을 적용하는 것입니다. 이것이 첫 번째 옵션입니다. 데이터베이스는이 경우 모든 파티션에서 모든 값을 검사합니다. 그러나 테이블이 얼마나 큰 지 상관없이 너무 오랜 시간이 걸리지 않는 고유 한 인덱스입니다 (이것이 당신의 염려 인 경우).

1

예, 고유 인덱스를 두 열에 만 입력하면 Oracle은 글로벌 인덱스를 생성하고 모든 파티션을 검사합니다. 이것은 우리가 큰 테이블 (작은 테이블은 괜찮을 것입니다)에 대한 로컬 인덱스를 선호하기 때문에 언젠가는 직면하는 도전 중 하나입니다.