技術者は処理を一度に行うように考えるせいか、巨大なSQLを組み立てることがある。データ量が少なければ何の問題もないのですが、100万件以上になってくると、処理時間が予想不可能になる。
昔のファイルの扱いのように、データをシーケンシャル読んで処理する方法の方が優れてる場合もあるため、実装方針を決める際にSQLの規約を決めておかないと、結合・システムテストで大変なことになる。
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=31846&forum=26&36
一般的に集計関数を使用したサブクエリを自己結合した場合に、 クエリのレスポンスが著しく悪化することがあります。 その場合集計結果を一時テーブルに出力して、一時テーブルの結合条件にインデックスを作成し
本体と結合すると大幅にレスポンスが改善すると思います。