動いてるじゃないですか。何が問題か?この種の『バグ?』は、『バグ』として認識されることは滅多にありません。仕様通り完璧に動くんですもの。外部仕様を満たしているんですから、絶対にバグではない!と言い張るかもしれません。テスト工程でも問題なし。本番に移行して初期稼働でも大丈夫です。ユーザーさんは間違いなく検収書にサインしてくれます。みんな幸せに見えますでも、システムが成功してそのユーザーのビジネスが成長したときになって、初めて『なんか遅くね?』、そのうち『動かねー!』となります。)になってしまっていたのです。いう世代の管理者はこの結果をそのまま受け入れてしまいがちです。新世代のプログラマたちは、そもそも処理コストの意識が......SI営業『これだけ御社の事業がご繁盛してデータ量が増えたんですから』ハード営業『もっと高性能なマシーンもご用意できます』ユーザーCIO『よし、営業利益も出てきたし新プラットフォームへマイグレーション。商売繁盛、みんな幸せになれます。幸せをもたらしてくれて誰にも気付かれなかった森の妖精のように、このバグは役目を終えます。なに、心配ありません。システム開発の深い森が続く限り、また妖精は現れますよ。それでいいの?いったい何をテストしたのか本番環境と開発・テスト環境は同じものであるべきです。現実はなかなかそうはいきません。営業ベースの開発費の折衝のなかで、まず開発・テスト機の予算が削られていきます。予算が足りなくて、グレードを下げなければならなかったら、本番機、テスト機とも同じレベルでダウングレードした方が良い結果を期待できるのですが、そのような例は稀です。テストデータも、数年後のデータ増大を見越して、想定される最大量のデータを投入してテストするべきですが、それもあまり見たことがありません。件のデータで注意深く見れば問題が分かりました。1,000件以下のデータならおそらく見落とします。100万件に増えたら、壊滅的に破綻します。この例で言うと、テーブルの設計が悪いのです。と多くの人が言うでしょう。アプリケーションにミスはありません。と皆さんも考えるかもしれません。テーブルの設計に問題があったとしても、その影響を受けないようなアプリケーションは書けないの?と私は思う。側にそこまで依存するアプリケーションの責任はどうなの?と私は考える。ロバストな強靭な実装は出来ないのか?と疑問を持ちませんか。屋さんの感覚と私のそれはちょっとズレがある』というのは、そういう部分です。個人的な趣味ですが、抽出件数が少ないときは、1個1個のテーブルに個別にアクセスして明示的にプログラム側で繋げる処理の方が好きです。いう前置きで、次のストアード・プロシジャに進みます。ストアードプロシジャ(ストアードプロシジャを「ストアド」と言われる度に凄い違和感)...省略形なら「プロシジャ」と呼んでくれストアードプロシジャは乱用するとロジックがあちこちに分散してしまい嫌いです。3つ見比べないと、なにやってるかわかんなくなる。分からなくなるから、エイ面倒と別のプロシジャを書く。経験ありませんか?システム設計やDBMSの教科書では逆のことを書いているけど、現実を見ろ!部品化やブラックボックス化など、却ってシステムを弱くしバグを作り込む原因になっていたりする現実。「ブラックボックス」なんて、本来の意味とは逆のネガティブな使われ方をする用語になっていたりする。設計されたストアード・プロシジャは処理効率のみならず、ロジックのカプセル化においても有効なのはいうまでもありません。方式より確実に速いです。制約の有無にも影響を受けません。SUSPEND;という構文で、複数行を返すプロシジャが簡単に書けることが挙げられます。これは、実にパワフル且つ便利です。次のプロシジャは、比較的少量のデータセットの抽出においては、おそらく最速。同じような仕事をします。お任せするかの違いです。制約で述べたようなこともままあります。?その前にちょっと考えましょう。見れば一目瞭然じゃん。