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