[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 メーリングリストの案内