銀河鉄道~ぽんこつエンジニアのブログ~

思いつきで書いています。

straight_join

一般的には、joinの順序はオプティマイザが一番効率の良い順序を探し、

その順番で実行してくれます。

しかし、まれにそれよりもレスポンスの良い順序に指定したい場合があります。
MySQLでは、そのような場合、joinの代わりに、straight_joinを使います。
 
straight_joinは、左のテーブルの次に右のテーブルを読み込むことを強制します。
ある場合においてはstraight_joinを使用することでパフォーマンスが改善する可能性があります。
 
ただし、オプティマイザは、データ数やSQLの条件によって順序を決めていますので、
straight_joinを使って順序を固定することで逆にパフォーマンスが落ちる可能性もあります。