DUALテーブル?

デスマ入り目前のプロジェクトに社内派遣されてました :roll: その中で見たのが、以下のようなSQL。

SELECT
 NVL((SELECT C_1 FROM T_1 WHERE J_1 = /*NoId*/), ' ') AS A_1,
 DECODE((SELECT C_2 FROM T_1 WHERE J_1 = /*NoId*/), '1', 'true', '2', 'false', 'false') AS A_2
 ……同じようなものの繰り返し……
 FROM DUAL

とにかく長い…実際にはWHERE句ももっと長いし名前も長い、SELECT文が画面一杯続いた後…FROM DUAL :?: なんじゃそのテーブルは、データベースを一からお勉強したことのないわたしには結構衝撃のDUALテーブル。はい、DUALも知らないボクが通りますよぉ :arrow:

Oracle屋さんには、入門Oracleなどの本でお馴染みのテーブルらしいのですが…そんなの知らないわたしはDUALってテーブル何状態。要するにダミーテーブルみたいなものらしい。まぁ、すぐにググって…ふ~んって感じだったわけですが…使う場面なの :?:

しかし、DUALの扱いというかSELECTの構文だけでも有名どころのデータベースで結構違いがあるんですね~DUALはOracle, MySQLにはあるけどPostgreSQLにはないとか、FROM句を省略できたりできなかったりとか。

で、DUALテーブルをググってる途中で見つけたSIGSEGV – MySQLのSQLチューニング(IN 演算子)の結果面白いですね~まぁ、この辺りになるとわたしには魔術の世界ですね。MySQLのIN演算子って遅いのか :?: とか色々。

上記ページに以下のように書かれているわけですが…以下斜体部引用。

同じ結果なのに歴然とパフォーマンスが変わるところがSQLチューニングの醍醐味ですね。

この感覚非常によくわかるんですが…わたしの場合は、その辺りが許せなくてSQL嫌いのデータベース嫌いの一因になってたりします :|

しかし、DUALって名前の由来はなんなんだろう?

基礎からのMySQL [基礎からのシリーズ] (プログラマの種シリーズ) 基礎からのMySQL [基礎からのシリーズ] (プログラマの種シリーズ)
西沢 夢路

ノン・プログラマのためのPHP入門 10日間コース 初めてのPHP & MySQL 第2版 基礎からのPHP [基礎からシリーズ] (プログラマの種シリーズ) MySQL 辞典 (Desktop reference) (DESKTOP REFERENCE) 実践マスターPHP+MySQL―PHP4/PHP5対応
by G-Tools

トラックバック URL :

日本でもDreamSparkがはじまったようです

以前、『Microsoft DreamSpark…とりあえず日本は蚊帳の外』と書きましたが…ようやく :?: 日本でもはじまったようです。

Microsoft DreamSpark(MSKK)

以下が現時点で、無償ダウンロードできる製品です。

  • Visual Studio
  • Expression Studio
  • Windows Server 2003
  • SQL Server Developer Edition
  • XNA Game Studio 2.0
  • XNA Creators Club Membership

う~ん、もうチョット広げろという気もするわけですが…学生さんうらやましい。なお、学生であることを証明するために国際学生証ISICカードが必要なようですね。

あと、現時点の対象学生は、大学院生、大学生、専門学校生、高等専門学校生の4,5年生です。予定では高校生まで広がるはず。

まぁ、個人的にはLinuxやBSDでガリガリやって欲しいですけどね :mrgreen:

トラックバック URL :

SYS_CONNECT_BY_PATH…でハマル

何度も言いますがわたしはSQLが大嫌いです ;)

試験部隊のデータベースで突然SQLがエラーになると言うことで調査しました…なんでオレが :?: と思いつつ人も居なかったので。

まぁ、エラーになるSQL文は特定できているので簡単なことです…たぶん。とか思いつつ。

開発部隊のデータベースに接続して、エラーになるSQL文を実行…当然というか正常に結果を返してきます。

気を取り直して、試験部隊のデータベースだとやはりエラーになります。

ほぉ、ORA-30004ですか…なになに :?: SYS_CONNECT_BY_PATH関数がホゲホゲって書いてあるなぁ~なんだ、その関数と思って検索…ほぉ、データの中をセパレータで区切ってホゲホゲ :roll:

へぇ~SQL(ORACLE)の関数って色々あるのね~なんて感心しながら、SQL文を見る。ありゃ、SYS_CONNECT_BY_PATHなんて使ってないよぉ :shock:

あ、なんか変な関数定義しているなぁ~この中かなぁ面倒だなぁ~と思いつつ探す…ないよ :shock:

引いているテーブルの中に何個かビューがあるよぉ~ビューの定義を見る…げ、あるじゃんSYS_CONNECT_BY_PATH。ビューの中でエラーかよ。しかも、セパレータの文字によるデータ依存かよ :shock:

と言うことで、データの中身を検索…あったセパレータに依存するデータ。とりあえず除去して、SQL文が正常に実行されることを確認。あとは、ナゼそんなデータが入ったかを調査するだけ…まぁ、それはわたしの知ったことじゃないけど。とりあえず復旧だけはしたので :arrow:

なんか、ビューの中にこんなデータ依存の関数を忍ばせるなよぉ :!: という怒りより。

よく、こんな面倒で複雑なSQLを書けるよなぁ。と全然別なところで感心してしまった。

しかし、あらためて嫌いになりましたSQL

トラックバック URL :

developerWorksの記事が盛りだくさん過ぎる件

昔から秀逸な記事が多いIBM developerWorks Japanなのですが…。

最近、一気に記事が公開されることが多くて困っています :| 逆に言うとうれしい悲鳴でもあるわけですが…。

昨日、2月15日には一気に11件の新着で…そのうち興味深いモノが半数以上。さらに、内容の濃いものもあるので、おバカなわたしは消化しきれません :roll:

と言うことで、徐々に読むしかない状況に…少し前は、もう少し小出しにしてくれてたと思うんですけどね。

そう言えば、編集長のブログも始まったので…お願いしてみようかなぁ :?:

もう少し、小出しにしてください! :oops:

が~ん、コメント欄しかないよぉ :cry: 書くかな…と言うことで書いてみた。

トラックバック URL :

嫌いな一因発見…でもSQLは嫌いですぅ

CodeZineの【デブサミ2008】真のDBエンジニアになるために必要なこと(レポート)に以下のように書かれていた。

http://codezine.jp/a/article/aid/2232.aspx

CodeZine:【デブサミ2008】真のDBエンジニアになるために必要なこと(レポート) via kwout

なるほどね~確かにわたしがSQLになじめない一因がわかったような気がした :idea:

SQLの集合思考という発想が奇異に感じられるから

いや、それだけじゃなくてSQLの構文が奇異に感じちゃうんですよね :|

なので、Martin Fowler先生が書いているドメインロジックとSQLを読みながら…結局はトレードオフなんだよね~と思いつつ基本的にSQLをシンプルにする傾向がある ;)

どうしても性能がでないじょ~と言う罠にはまった時だけSQLを嫌々絞り出す…と言うのが、わたしのスタイル :mrgreen:

運用環境を超えるデータ件数で脳内シミュレートもしくは試験をちゃんとしておかないと…後々恐ろしいことが起こる可能性がありマスけど ;) 経験済 :cry:

昔、見た印刷して1ページに収まらない1文のSQLなんて…
オゾマシイ以外のナニモノでもないorz

トラックバック URL :

お年玉付き年賀はがき抽選結果

検索で来られる方が多いようなので…今年(2009年)の結果は「平成21年用お年玉付郵便葉書及び寄附金付お年玉付年賀切手当せん番号 – 日本郵便」です。

お年玉年賀はがきの抽選日が遅いという話を書きましたが…抽選結果がでたようですね :)

とりあえず、会社にきていた1枚だけチェックしましたがダメでした。

結果の確認は、色々なところでできますが…わたしは、ココでチェックしました ;)

で、賞品を見るとiPod classic 160GBiPod nano 8GBとか、ニンテンドーDS Lite とか、欲しいモノがあるじゃないですかぁ :shock: 知らなかった :oops:

まぁ、自分が出さないので頂く年賀状も少ないわけで家に届いてるものも期待薄でしょうね :|

頂いたのに返してない方…ごめんなさい。

そう言えば、販売期間までのばしてガンバッたのに4億枚 :shock: も売れ残ったとか…どうするんですかね :?: 再生紙ハガキの原料ですか :mrgreen:

暇な人が一杯居そうな気もするので…2008を手書きで2009に書き換えるってのは、いかがでしょう :mrgreen:

トラックバック URL :