はじめに Amazon RDSのMySQL 5.7で開発を行うことになりました。そこで、少しですがMySQL 5.7の機能を調べる機会がありましたので、今回は「UNION ALL」に関してのオプティマイザの改善について記載したいと思います。 「UNION」と「UNION ALL」の違い 先ずは、改めて「UNION」と「UNION ALL」の違いを簡単に説明しておきます。 UNION 結合対象のSELECT文の結果の全レコードを取得し、重複レコードを除去し返却します。 UNION ALL 結合対象のSELECT文の結果の全レコードををそのままつなげて返却します。 違いは結合した結果から、「重複レコードを除去するか、しないか」だけとなります。 MySQL 5.7での「UNION ALL」の改善とは 後ほど、「UNION」「UNION ALL」の実行計画の例を記載しますが、実行計画は単純であり、