[pgsql-jp: 35707] Re: たくさんの表を連結するときの速いSQL文を教えてください

"鈴木孝征(Suzuki Takamasa)" takamasa @ thaliana.myhome.cx
2005年 7月 8日 (金) 09:50:57 JST


鈴木孝征です。

先の私のメール(35701)は水野様から教えてもらったスレッドは一通り読んでか
ら返事を書きました。しかし、今もう一度水野様のメールを読んでみたところ、
私がメールを少し読み違えていたことに気づきました。

> 「同じ構造のテーブルをたくさん作るより、カラムを1つ
> 増やして大きな1つのテーブルにした方がよい」でした。

というところをテーブル名を格納するカラムをひとつ増やすということではな
く、値を入力するカラムを増やすという意味に読み違えてしまいました。ので、
データが増えていくときにカラムを増やすことのほうがテーブルを増やすよりい
いのかという先の私の質問に至りました。

テーブルの定義を変更したほうがいいという趣旨の皆様の提案は理解しました。
インデックスの使い方などを今一度勉強し、検討したいと思います。

しかし、テーブルの定義を変更した場合、今行っている演算がSQLでできなくな
るのではないかと考えています。

現在下記のような二つのテーブル(t1とt2)があり、次のようなSQLを実行し条件
に該当するpを検索しています。

t1
p	| v
-------------
p1	| 1
p2	| 2
p3	| 3

t2
p	| v
-------------
p1	| 6
p2	| 5
p3	| 4

select t1.p, t1.v, t2.v from t1, t2 where t1.p=t2.p and t2.v / t1.v > 2

これを下のように一つの表(t)にまとめた場合、演算結果に基づくデータの抽出
にはどういったSQL文を組んだらいいのでしょうか。

t	| p	| v
----------------------
t1	| p1	| 1
t1	| p2	| 2
t1	| p3	| 3
t2	| p1	| 6
t2	| p2	| 5
t2	| p3	| 4




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