mysqlのサブクエリを早くする裏ワザ

根本的な解決にはならないと思うけど、けっこう早くなったので一応メモ

■改善前
SELECT * FROM 受注データ WHERE ユーザID IN (SELECT ユーザID FROM ユーザマスタ WHERE email LIKE "%@gmail.com");

■改善後
SELECT * FROM 受注データ WHERE ユーザID IN (SELECT * FROM (SELECT ユーザID FROM ユーザマスタ WHERE email LIKE "%@gmail.com") AS TMP_TBL);

修正点はサブクエリの部分の
 SELECT ユーザID FROM ユーザマスタ WHERE email LIKE "%@gmail.com"
→SELECT * FROM (SELECT ユーザID FROM ユーザマスタ WHERE email LIKE "%@gmail.com") AS TMP_TBL
とするだけ

前者の記述だとサブクエリの中のクエリが何度も実行されるようです

※こちらをそのまま参考にさせていただきました
http://rememo.jb-jk.net/rememo/show/57?select_locale=en