JOIN
FROM
でテーブルを正しい順序に並べることで、順序を強制できます。 条項:
-
MySQLには、
STRAIGHT_JOIN
という特別な句があります。 注文が重要になります。これは、
b.id
のインデックスを使用します :SELECT a.Name, b.Status FROM a STRAIGHT_JOIN b ON b.ID = a.StatusID
そして、これは
a.StatusID
のインデックスを使用します :SELECT a.Name, b.Status FROM b STRAIGHT_JOIN a ON b.ID = a.StatusID
-
Oracleには特別なヒント
ORDERED
がありますJOIN
を強制する 注文:これは、
b.id
のインデックスを使用します または、b
でハッシュテーブルを作成します :SELECT /*+ ORDERED */ * FROM a JOIN b ON b.ID = a.StatusID
そして、これは
a.StatusID
のインデックスを使用します またはa
にハッシュテーブルを作成します :SELECT /*+ ORDERED */ * FROM b JOIN a ON b.ID = a.StatusID
-
SQL Serverには、
FORCE ORDER
というヒントがあります。 同じことをするために:これは、
b.id
のインデックスを使用します または、b
でハッシュテーブルを作成します :SELECT * FROM a JOIN b ON b.ID = a.StatusID OPTION (FORCE ORDER)
そして、これは
a.StatusID
のインデックスを使用します またはa
にハッシュテーブルを作成します :SELECT * FROM b JOIN a ON b.ID = a.StatusID OPTION (FORCE ORDER)
-
PostgreSQLの皆さん、ごめんなさい。 TODOリスト 言う:
オプティマイザーのヒント(不要)
オプティマイザーのヒントは、オプティマイザーの問題を回避するために使用されます。むしろ、問題を報告して修正してもらいたいと思います。
比較の順序は、RDBMS
では関係ありません。 、AFAIK。
私は個人的に常にどの列が検索されるかを推定し、この列を左側に配置しようとしますが(lvalue
のように見えるため) 。
この回答を参照してください 詳細については。