はじめに 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」の実行計画の例を記載しますが、実行計画は単純であり、
![MySQL 5.7 オプティマイザの改善〜UNION ALL〜 | RE:ENGINES](https://cdn-ak-scissors.b.st-hatena.com/image/square/a32a22a5ed1e4b65070c1a3712bef88effa9ba17/height=288;version=1;width=512/https%3A%2F%2Fre-engines.com%2Fwp-content%2Fuploads%2F2017%2F02%2Flogo-mysql-170x115-e1488211292574.png)