2012-06-14 3 views
0

테이블 파티셔닝에 대한 기사는 거의 읽지 않았지만 여전히 혼란 스럽습니다. 내 경우는 다음과 같습니다.오라클 10g에서 테이블 파티셔닝 사용

저는 약 10 백만 레코드를 포함하는 큰 테이블 TA를 가지고 있으며 매일 30-40K 레코드가로드됩니다.

테이블 TA에는 날짜 필드를 포함한 많은 열이 포함되어 있으며, 하나 더 중요한 열은 varchar 인 project #입니다.

이제 날짜 필드에 테이블 TA를 나누는 옵션이 있습니다.

하지만 내 쿼리가 주로 표시되는 경우 한 날짜 만 데이터를 가져오고 날짜 필드는 인덱싱되므로 데이터 가져 오기가 큰 문제는 아닙니다.

또한 "IN"절을 사용하여 "WHERE"조건에 프로젝트 #가 포함되어 있습니다. 즉, "IN"절을 통해 N 개의 프로젝트 # 입력을 입력해야합니다.

이제 어떻게 진행해야하는지 알려주세요. 당신은 항상 전체 일별 데이터를 읽을 경우

+0

"비슷한"또한 날짜를 포함합니까? – Mario

+0

예 .. Mario same qry에는 날짜와 프로젝트가 모두 포함되어 있습니다. – Avi

+0

날짜 필드가 현재 날짜입니까? –

답변

2

다음을 수행하십시오)

단계 0 날짜에 글로벌 인덱스를 드롭, 당신은 파티션으로 필요하지 않습니다.

1 단계) 매일 파티션

2 단계 만들기) 그것의 단지 부분, 프로젝트

내가 당신을 misundertood 경우에 보조 파티션 로컬 인덱스를 작성하고 전체 매일 파티션을 읽지 않습니다, 그런 다음 스키마를 그대로 두십시오.

1

색인 생성 ta_idx on ta (upload_date, project #) 압축 1;

다중 열 압축 인덱스가 충분할 수 있습니다. upload_date은 행이 추가 될 때 많이 변경되지 않으므로 clustering factor은 매우 낮게 유지됩니다. 반복되는 값이 여러 개인 경우 upload_date을 압축하면 많은 공간을 절약 할 수 있습니다. 이것은 아마도 매우 효율적인 색인 일 것입니다.

파티션을 추가하여 효율적으로 만들 수는 있지만 문제가되지 않을 수도 있습니다. 파티셔닝은 매우 유용하지만 매우 까다로울 수도 있습니다. 파티션을 사용하려는 유일한 장소 인 경우이를 피할 수 있습니다. (이것을 파티션에 대해 더 많은 것을 배우기 위해 핑계로 사용하고 싶지 않다면)