2020/04/27 にリリースされた MySQL 8.0.20 ではハッシュジョインが強化され、
等結合のINNER JOIN(MySQL 8.0.18 で実装済み)
のほかに、
等結合以外のINNER JOIN
セミジョイン(IN句によるサブクエリなど) アンチジョイン(NOT EXISTSによるサブクエリなど)
LEFT OUTER JOIN / RIGHT OUTER JOIN
MySQL の場合、RIGHT OUTER JOINは表の左右を入れ替えたLEFT OUTER JOINとして実行される
で利用できるようになりました。
8.2.1.4 Hash Join Optimization(MySQL 8.0 Reference Manual)
そこで、これらのケースで実行計画等がどう変わるのかを確認してみます。
テスト用のテーブル・SQL・データ等
テーブルと SQL はこちらのワークログを参考に、明らかに間違っている部分を修正
WL#2241: Hash join …
[さらに読む]