フィルタのパフォーマンス: 結合基準と WHERE 句
SQL クエリを実行する場合、結合基準と WHERE 句の両方を使用してデータをフィルタリングするのが一般的です。 WHERE句。ただし、どちらのアプローチの方がパフォーマンスが優れているのかという疑問が生じます。
次の 2 つのクエリを考えてみましょう:
クエリ 1 (結合時のフィルター)
SELECT * FROM TableA a INNER JOIN TableXRef x ON a.ID = x.TableAID INNER JOIN TableB b ON x.TableBID = b.ID WHERE a.ID = 1
クエリ 2 (フィルターWHERE)
SELECT * FROM TableA a INNER JOIN TableXRef x ON a.ID = x.TableAID AND a.ID = 1 INNER JOIN TableB b ON x.TableBID = b.ID
多くの人は、結果セットを早く減らすため、結合基準 (クエリ 1) でフィルタリングする方が高速であると直感的に考えています。しかし、経験的テストにより、驚くべき結果が明らかになりました。
パフォーマンス結果
各テーブルの 1000 レコードのデータセットを使用してテストを実行した後の結果は、クエリ 2 (フィルタリング) を示しました。 WHERE 句上) は実際にはわずかでしたより高速:
Filter Technique | Elapsed Time (ms) |
---|---|
Join Criteria (Query 1) | 143256 |
WHERE Clause (Query 2) | 143016 |
論理的考慮事項
2 つのアプローチのパフォーマンスは近いですが、フィルタリングに WHERE 句を使用することを支持する論理的な議論があります:
結論
どちらのフィルタリング手法も同様に実行されますが、WHERE 句でフィルタを適用する方がわずかに速く、より多くの効果が得られます。論理的に一貫している。この手法により、同じパフォーマンスが得られ、クエリの明確さが保証されます。
以上がJOIN 句と WHERE 句のフィルタリング: どちらの SQL アプローチがより優れたパフォーマンスを提供しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。