MySQLでInnoDBのテーブルAと、MyISAMのテーブルBをインデックスが設定されていないカラム同士で内部結合しようとしています。
このSQLの実行は非常に遅く、profilingでどこが遅いか調べると、Copying to tmp tableに20秒かかっていることわかりました。
InnoDBとMyISAMでは、My.cnfの設定する変数がことなるのですが、インデックスが設定されていないカラムでの結合ですので、
join_buffer_sizeを増やして速くなることを確認しました。
しかし接続数が多く、たくさんのメモリを割り当てるわけにはいきません。
join_buffer_sizeに設定するのは、(Aの取得サイズ+Bの取得サイズ)×想定接続数でよいでしょうか?