JOIN クエリの WHERE 句と ON: パフォーマンスへの影響
T-SQL で JOIN クエリを使用する場合、一般的に次のいずれかを選択する必要があります。 WHERE 句または ON 句にフィルタ条件を配置します。どちらのアプローチでも同じ結果セットが得られますが、考慮すべき微妙なパフォーマンスの違いがあります。
具体的には、次のクエリを調べてみましょう:
SELECT * FROM Foo f INNER JOIN Bar b ON (b.BarId = f.BarId); WHERE b.IsApproved = 1;
比較:
SELECT * FROM Foo f INNER JOIN Bar b ON (b.IsApproved = 1) AND (b.BarId = f.BarId);
どちらのクエリも同一の行セットを返しますが、パフォーマンス特性は異なります。
一般に、フィルターを配置するのはON 句は次の理由で推奨されます:
ただし、WHERE 句にフィルターを配置すると、結果セットが小さくなる可能性があります。必要:
SELECT * FROM Foo f LEFT OUTER JOIN Bar b ON (b.BarId = f.BarId) WHERE (b.IsApproved IS NULL OR b.IsApproved = 1);
結論:
パフォーマンスが懸念される場合は、 ON 句の条件をフィルタリングして結合操作を最適化し、結果セットのサイズを削減します。外部結合またはオプションのフィルタリングの場合、目的のフィルタリングを実現するには WHERE 句を使用する必要があります。
以上がJOIN クエリの WHERE 句と ON 句: 最適なパフォーマンスを得るにはどちらを使用する必要があるか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。