1 つの SQL に同じ問い合わせブロックが何度も何度も出現するときは、それを出現回数分 DBMS に検索させるのマジでムダだしパフォーマンス悪くなるから、with 文で一時的なビューを作るようにした方がいいです。 以下は、Oracle の公式ドキュメントに記載されてる例ですけど、channel_summary っていうビューを一時的に作ってやって、それを 2 箇所で参照してます。with を使わないと、2 回当該の問い合わせブロックの実行が必要になってしまいますね。 この例みたく集計とか絡むと遅くなりがちだし、sales、channels テーブルがクソみたいに巨大でキャッシュに乗らないと、一々 Disk I/O 発生して遅延デカくなってストレスで死ぬ*1。 WITH channel_summary AS ( SELECT channels.channel_desc, SUM(amoun