[pgsql-jp: 38778] Re: 3種類の値を持つ6つの項目の検索方法
k_hata @ zeus.eonet.ne.jp
k_hata @ zeus.eonet.ne.jp
2007年 9月 20日 (木) 16:59:40 JST
こんにちは
2の存在がネックということですね。
姑息な方法ですが、
CREATE TABLE img (
imgno serial PRIMARY KEY,
datastr char(6),
numof2 int,
data1 int,
data2 int,
data3 int,
data4 int,
data5 int,
data6 int,
);
データ投入時にトリガ等で、datastrにdata1〜data6をつなげた文字列をセット
同時に、numof2 にdata1〜data6のなかの2の数をセット
プロシージャの中で、
select * from img where datastr = '131313' or (numof2 > 0);
この結果セットから、2を含む行を再チェック
もしこのクエリで (numof2 > 0)に該当する行が多すぎるようなら
CREATE TABLE img (
imgno serial PRIMARY KEY,
datastr1 char(6),
datastr2 char(6),
numof2 int,
data1 int,... );
こうしておき、datastr1には、2を1に変換した文字列を、datastr2には2を3
に変換した文字列をセット
select * from img
where (datastr1 = '131313') or (datastr2 = '131313') or (numof2 > 1)
こんなアプローチはどうでしょうか。
インデックスは使えるようになるとは思いますが、速度のほうはどうでしょう...
他に手がなければ試してみる価値はあるかもしれません。
pgsql-jp メーリングリストの案内