クエリで結合を使用する順序は実行時間に影響しますか?
1054 次
4 に答える
4
いいえ、違います。
SQL Server
のオプティマイザーは、結合順序に関係なく、(その意見で) 最善の方法を選択します。
SQL Server
FORCE ORDER
は、テーブルがリストされている順序で結合を導く特別なヒント をサポートします。
これらのクエリ:
SELECT *
FROM t_a
JOIN t_b
ON a = b
OPTION (FORCE ORDER)
と
SELECT *
FROM t_b
JOIN t_a
ON a = b
OPTION (FORCE ORDER)
OPTION (FORCE ORDER)
省略された同じ計画と、追加された別の計画が生成されます。
ただし、このヒントは、自分が何をしているのかを完全に理解している場合にのみ使用してください。
于 2010-02-16T18:30:17.887 に答える
0
オプティマイザーは通常、すべての結合順序を比較し、クエリを記述した順序に関係なく最適な順序を選択しようとしますが、複雑なクエリでは考慮すべきオプションが多すぎます。可能な結合順序の数は次の階乗に増加することに注意してください。結合されたテーブルの数。この場合、オプティマイザーはすべてのオプションを考慮するわけではありませんが、クエリで結合を記述した順序を確実に考慮するため、実行計画と実行時間に影響を与える可能性があります。
于 2010-02-16T19:36:22.383 に答える
0
外部結合の場合、テーブルの順序によってクエリの意味が変わり、実行計画が変わる可能性が非常に高くなります。
于 2010-02-16T20:09:17.313 に答える