3 천만 개의 행이있는 데이터베이스 테이블이있는 Informix 11.7 서버가 있습니다. 테이블 스키마는 다음과 같이이다 :이 표에informix 테이블에 대한 좋은 인덱스 구축에 도움이 필요합니다.
CREATE TABLE ppd (
datum DATE,
obrabot INTEGER,
rb_obr INTEGER,
blag_sif_transakcija INTEGER,
tip_transakcija CHAR(20),
tabela_kod CHAR(5),
vrska_sif_transakcija INTEGER,
ekspozitura CHAR(3),
valuta CHAR(3),
iznos_p DECIMAL(20,2),
iznos_d DECIMAL(20,2),
smetka CHAR(15),
podsmetka CHAR(9),
client_id CHAR(13),
client_tip CHAR(1),
client_naziv CHAR(100),
adresa CHAR(100),
edb CHAR(13),
pasos CHAR(20),
maticen_broj CHAR(20),
vid_rabota CHAR(2),
smetka_primac CHAR(15),
naziv_primac CHAR(100),
broj_primac CHAR(20),
smetka_davac CHAR(15),
naziv_davac CHAR(100),
broj_davac CHAR(20),
edb_fl CHAR(13),
sifra_plakanje CHAR(6),
namena CHAR(100),
vo_valuta CHAR(3),
vo_iznos DECIMAL(20,2),
datum_vreme DATETIME YEAR TO SECOND,
operator CHAR(3),
flag INTEGER,
potpisnik CHAR(10)
);
가 서로 하나 매우 유사하다 (6 개) 인덱스, 그리고 나는 그들이 잘못 기록 된 것을 생각하고이 테이블에서 실행되는 쿼리가 그 이유는 이유 느린. 19000 행의 경우 30 분이 소요됩니다. 이 필드는 모든 인덱스에 데이텀 및 운영자 반복 볼 수 있듯이
CREATE INDEX ix_ppd_1 ON ppd (datum,operator,client_id,obrabot);
CREATE INDEX ix_ppd_2 ON ppd (datum,operator,edb,obrabot);
CREATE INDEX ix_ppd_3 ON ppd (datum,operator,maticen_broj,obrabot);
CREATE INDEX ix_ppd_4 ON ppd (datum,operator,rb_obr,obrabot);
CREATE INDEX ix_ppd_5 ON ppd (datum,operator,edb,edb_fl);
CREATE INDEX ix_ppd_6 ON ppd (datum,operator,rb_obr,tabela_kod);
: 여기 는 인덱스가 어떻게 생겼는지입니다. 테이블을 최적화하기 위해 누군가를 다시 작성하는 데 도움을 줄 수 있습니까?
지금까지 테이블 ppd
을 최적화하기 위해 매 2 주마다 UPDATE STATISTICS HIGH FOR TABLE ppd
을 실행해야했지만 좋은 해결책은 아니겠습니까?
댐, 전 세계의 누군가가 여전히 informix..nice –
쿼리를 실행하고 있습니다. 선택, 삽입/업데이트/삭제를하고 있습니까? 이러한 인덱스는 datum이 where 절에있는 경우에만 유용합니다. where 절에서 컬럼이 발견되지 않으면 보통 인덱스를 사용할 수 없습니다. –
테이블에서 다시 읽는 일부 내장 프로 시저가있는 간단한 선택 쿼리 ppd @AbBennett 그렇습니다. 우리는 아직 informix에 있습니다 ... 변경 불가능합니다. –