2012-06-22 3 views
1

Informix에서 적용 가능한 인덱스가없는 초대형 테이블에서 select를 수행하려고합니다. 유감스럽게도이 프로젝트를 완료해야 할 때까지는 적용 가능한 인덱스를 추가 할 수 없습니다. 데이터베이스 변경에 대한 엄격한 절차가 있으며 조직에서 필요한 승인을 얻는 데 너무 오래 걸립니다.Informix - 파티션에서 선택

테이블이 조각화되어 있으며 이전에 Oracle 데이터베이스의 특정 파티션에서 선택했습니다. SELECT 쿼리에서 조각을 지정할 방법이 있습니까? 간접적

+0

당신이 당신의 쿼리가,? ..이 경우에는 한 번 임시 쿼리를 반환합니다 테이블을 복제 할 수 및 쿼리를 지원하기 위해 인덱스를 추가 얼마나 많은 결과를 예측할 수

내 2 센트

... ? –

답변

1

...

검색 기준은 행을 식별하면

은 다음 인포믹스 (주사 파티션을 피하기 위해 '단편 제거'를 수행 분할에 사용되는 식 (S)에 기초하여 부분적으로 선택 될 파편)을 만들 수 있습니다. 라운드 로빈 파티셔닝을 사용하면 조각 제거가 불가능합니다. 식 또는 간격 조각화가있는 경우 조각 제거의 이점을 누릴 수 있습니다. (조각 제거는 성능면에서 큰 장점이기 때문에 가능할 때마다 수행됩니다.)

궁극적으로 적절한 인덱스를 넣지 못하면 쿼리 성능이 느려질 수 있습니다 테이블 스캔은 인덱스 된 액세스 조작보다 속도가 느릴 수 있습니다. 즉, 때때로 테이블 스캔이 쿼리를 처리하는 가장 빠른 방법입니다. 그것은 종종 그런 경우가 아닙니다.

+0

감사합니다. Johnathan. 조각에 번호가 매겨져 있기 때문에 테이블이 라운드 로빈 분할을 사용하고 있다고 가정합니다 (예 : tablename01, tablename02 등). 내가 어떻게 확인하는지 알고 있니? –

+0

정보는 시스템 카탈로그에 있지만 어디에서 볼지 알아야합니다. 'sysfragments'와 같은 것 같습니다. –

+0

sysfragments.strategy 열에 기록 된 것으로 확인되었습니다. 이 테이블은 라운드 로빈 파티션입니다. 이 테이블에 대한 문서는 http://publib.boulder.ibm.com/infocenter/idshelp/v117/index.jsp?topic=%2Fcom.ibm.sqlr.doc%2Fids_sqr_040.htm에 있습니다. –

0

테이블이 라운드 로빈 조각화를 사용하는지 확인하는 방법은 무엇입니까? 두 가지 방법 :

쉬운 방법 중 하나는 당신이 낱말 테이블 생성 DDL에서 "라운드 로빈"을 참조하면 DBSCHEMA

UNIXprompt> dbschema -d <db name> -ss -t <table name> 

을 사용하여 테이블/인덱스의 스키마를 얻을 수 있습니다, 당신은 알 수 있습니다.

다른 하나는 SMI를 쿼리
R = 라운드 로빈 분열 전략
E = 발현 계 분열 전략
I : 여기

database <db name>; 
select unique(strategy) from sysfragments 
where fragtype = 'T' 
    and tabid = (select tabid from systables where tabname = '<table name>'; 

이 전략 항목 값 키인 = IN DBSPACE 절이 단편화 전략의 일부로 특정 위치를 지정합니다.
T = 테이블 기반 단편화 전략
H = 테이블은 테이블 계층 구조 (IDS) 또는 해시 기반 fragme 국가 전략 (XPS).

마지막으로 적어도, 나는 (큰 테이블이 지금까지 그래, 억 1.5K 폭 600 열, 600 억 RECS입니다) XLDBs 작업, 및 인덱싱 이 대 (초)으로, 거대한 달라 지나요하지 (데이터베이스 서버 전용으로 약 100 개 정도의 vCPU를 확보 했으므로) 변경 통제 협의회에 청원을하고 색인을 만들 것을 권한다면 "온라인 "절에서 올바른 fillfactor를 결정하고 통계를 업데이트하는 것을 잊지 마십시오 (Art의 dostat 사용).