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

堀越 horihorikoshi @ yahoo.co.jp
2005年 7月 8日 (金) 11:09:29 JST


堀越です。

先ほどのSQLの項目指定が間違っていました。すいません。

select a.p, a.v, b.v 
from t a, t b
where a.t <> b.t and
      a.p = b.p and
      a.v / b.v > 2

こんなんでどうでしょう?


--- "鈴木孝征(Suzuki Takamasa)"
<takamasa @ thaliana.myhome.cx> 
からのメッセージ:
> 鈴木孝征です。
> 
> 先の私のメール(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 メーリングリストの案内