[pgsql-jp: 38787] Re: 3種類の値を持つ6つの項目の検索方法

渋谷泰宏 yasuhiro_shibutani @ ybb.ne.jp
2007年 9月 21日 (金) 02:10:03 JST


渋谷です。

既出の統合&変形案ですが、

CREATE TABLE img (
  imgno   serial PRIMARY KEY,
  data1   int,
  data2   int,
  data3   int,
  data4   int,
  data5   int,
  data6   int,
  match1 char(6),
  match2 char(6),
  match3 char(6)
 );

match1 〜match3 はそれぞれの値にマッチする項目のフラグ
(数値型で扱える項目数なら数値型でビット操作すればいいような・・・)

例えば
 (imgno, 1, 2, 3, 1, 2, 3, '110110', '111111', '011011')
となる。

で、動的にクエリを組めるとのことなので、

 select * from img where match1 = (検索条件値が1の項目のフラグ)
   and match2 = (検索条件値が2の項目のフラグ)
   and match3 = (検索条件値が3の項目のフラグ)

とかは、できませんかね?

07/09/21 に 渋谷泰宏<yasuhiro_shibutani @ ybb.ne.jp> さんは書きました:
> 渋谷です。
>
> 自己レスです。。。
> 読み返してみてようやく理解できましたがNGですね。
>
> 07/09/20 に 渋谷泰宏<yasuhiro_shibutani @ ybb.ne.jp> さんは書きました:
> > 渋谷です。
> >
> > 条件がよく理解できてないかもしれませんが、
> >
> > ・比較データが1のときは、[data1〜N の合計] < 3*N
> > ・比較データが2のときは、[data1〜N の合計] BETWEEN 1*N AND 3*N (すべて)
> > ・比較データが3のときは、1*N < [data1〜N の合計]
> >
> > こう言いかえてOKですか?
> >
> > 07/09/20 に 河本陽一<komoto.yoichi @ kcc.co.jp> さんは書きました:
> > > こうもとです。
> > >
> > > 依田 邦章 さんの書いたこと:
> > > > そもそもこのデータの持ち方自体変えることはできないのでしょうか?
> > >
> > > 自由に変えることができます。
> > >
> > >
> > > > >値や頻度は変わりませんが、項目は今後数倍に増える可能性があります。
> > > > これは現在6個あるカラムが数倍に増えるという意味と受け取りましたが
> > > > 間違いないでしょうか?
> > >
> > > はい。そのとおりです。
> > >
> > >
> > > > もし上記であるならば、今後このシステムはカラムが増えるたびに
> > > > 検索条件を追加していくつもりでしょうか。
> > >
> > > システム運用が始まった後は増えることはありません。
> > > この検索条件だけでは答えは出ないので、ふるいにかけるのに条件の調査
> > > をしているところです。
> > >
> > >
> > > > そもそもdata1〜6のカラムにおける区別をしていないなら以下のような
> > > > テーブル構成にはできないのでしょうか
> > >
> > > 正規化という意味ではそのとおりだと思いますが、今回は検索時の速度が
> > > 最優先なので、テーブルはひとつにしています。
> > >
> > > ======================================================================
> > > 河本陽一(こうもとよういち)
> > > mailto:komoto.yoichi @ kcc.co.jp
> > >
> > >
> >
> >
> > --
> > 渋谷 泰宏
> >
>
>
> --
> 渋谷 泰宏
>


-- 
渋谷 泰宏



pgsql-jp メーリングリストの案内