[pgsql-jp: 29932] Re: ORACLEでいう DUAL 表は?
Ei-ji Nakama
nakama @ ki.rim.or.jp
2003年 5月 16日 (金) 17:14:24 JST
なかまです。
> > > - なぜ DUAL という名前なのか?
> > > - そもそも、なぜ必要なのか
>
> > すいません、俺も命名基準は知りません。また、まったく興味も
> > ありません。たぶん、From 句で対応したかったのかなと類推する
> > のはできますが。。
> > で、その命名基準が判れば、納得できるとも思えませんが。。
>
> 命名基準が分かれば納得できるとは私も思ってませんが、
> でも特に後者は知りたいとは思います。
http://otn.oracle.com/oramag/oracle/02-jan/o12sendmail.html
select sysdate from DUAL は有名ですが、由来は
select e.name,d.name,c.name
from cat c,
dept d,
emp e,
dual x
where nvl('X', X.dummy) = nvl ('X', e.rowid(+))
and nvl('X', X.dummy) = nvl ('X', d.rowid(+))
and nvl('X', X.dummy) = nvl ('X', c.rowid(+))
and e.emp_no (+) = 1234
and d.dept_no (+) = 10
and c.cat_type (+) = 'RD'
# Oracleのパフォーマンスチューニングより引用。
みたいな事(無関係のSQLを無理矢理一度でとってくる)を実現
するのが当初の目的のようです。
今は昔、selectのパースの遅さたるや脳の欠陥に悪影響を及ぼすこと
いと凄まじけり。
フェッチするや、のっそーり返って来ることこれ当然の事。
更に、2度もselectを発行する時たるや、眠気をもよおす事これ確実な
る。
プリコンパイル、コンパイルのmakeを流す間に、トイレとコーヒーが
所望可能。。。
# 昔話風によんでね。
で、無理矢理一度のselectで取りたくなるは、人情かと。
# そのへんのおっさんに聞けば、昔のRDBの評価が解かるかも。
実際、昔は良く使いましたが、最近では可読性が悪くなるので
使う事はわたしはありません。
# Oracle7が出て、しばらくしてパフォーマンスチューニングが
# 出たときDUALのjoinを見て歓喜の声をあげたのはわたしです。
--
e-mail : Ei-ji Nakama <nakama @ ki.rim.or.jp>
pgsql-jp メーリングリストの案内