STRAIGHT_JOIN
テーブルの結合順序を強制するため、table1
外側のループでスキャンされ、table2
内側のループで。
オプティマイザーは完全ではありませんが(かなりまともですが)、最も可能性の高い原因は古い統計です。
いいえ、オプティマイザが間違っている場合のみです。これは、データ分布がひどく歪んでいるか、適切に計算できない場合(たとえば、空間インデックスまたはフルテキストインデックスの場合)である可能性があります。
統計を収集し、両方の方法で計画を作成し、これらの計画の意味を理解する必要があります。
あなたがそれを見たら:
-
自動生成された計画は最適ではなく、標準的な方法では改善できません。
-
STRAIGHT_JOIN
バージョンの方が優れています。常にそうなることを理解し、理由を理解します。 常にそうなります
、次にSTRAIGHT_JOIN
を使用します 。