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