私は3000万行のデータベーステーブルを持つ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)
);
がお互いに1つの非常に類似している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
を最適化するためにUPDATE STATISTICS HIGH FOR TABLE ppd
を2週間ごとに実行する必要がありましたが、これは良い解決策ではありません。
ダム、世界中の誰かがまだinformix..niceを使用しています –
あなたはどのクエリをテーブル上で実行していますか?選択、挿入/更新/削除を行っていますか?これらのインデックスは、datumがwhere句にある場合にのみ有効です。 where句で列が見つからないと、通常、索引は使用できません。 –
これは、テーブルから読み取っているストアドプロシージャを持つ簡単な選択クエリです。ppd @AbBennett はい、私たちはまだinformix上にいます...変更できません。 –