[pgsql-jp: 38815] Re: 3種類の値を持つ6つの項目の検索方法
k_hata @ zeus.eonet.ne.jp
k_hata @ zeus.eonet.ne.jp
2007年 9月 21日 (金) 22:05:36 JST
こうもとさんこんばんは。
盛り上がってますね。
データ件数が100万件となるとさすがに厳しいですね。
2の存在確率が極めて低い(1%以下程度)という条件なら、38778 の方法の延長で
いけると思います。
もしくは、別の方法として、
3通りの値が6項目、全部のパターンはたかだか 3^6=729通りであるから
CREATE TABLE pattern (
pattern_no int,
data1 int,
...
data6 int
);
これに729通りのパターンを事前に登録
CREATE TABLE img (
imgno serial PRIMARY KEY,
p_no int,
data1 int,
...
data6 int
);
CREATE INDEX idx_img_p_no ON img(p_no);
SELECT * FROM img where p_no IN (select pattern_no from pattern where
data1 .... )
imgテーブル自体はインデックススキャンで高速ですから、patternテーブルを舐
める速度が律速段階でしょうか。この部分は多数の方からの意見がそのまま使え
ますね。
はた
pgsql-jp メーリングリストの案内