外部キーとクエリ パフォーマンス
外部キーは参照整合性を強制する上で重要な役割を果たしますが、クエリのパフォーマンスに対する外部キーの影響は誤解されることがよくあります。一般的な考えに反して、外部キー自体はクエリのパフォーマンスを大幅に向上させません。
指定されたシナリオでは、クエリは結合条件として CategoryId フィールドを使用して、Products と ProductCategories の 2 つのテーブルを結合します。外部キー関係にもかかわらず、クエリ プランにはテーブル Products に対するクラスター インデックス スキャンが表示されます。これは、SQL Server が外部キーに基づいてインデックスを自動的に作成しないためです。
このクエリのパフォーマンスを向上させるには、Products.CategoryId フィールドにインデックスを明示的に作成する必要があります。インデックスの作成後、実行プランには両方のテーブルでのインデックス シークが示され、推定サブツリー コストが大幅に削減されます。
したがって、提示された質問に対する答えは次のとおりです。
外部キーはクエリのパフォーマンスを向上させますか?
すべてのテーブルのすべての FK 列にインデックスを作成する必要がありますか?
以上が外部キーはクエリを高速化しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。