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