ホームページ > データベース > mysql チュートリアル > 外部キーはクエリを高速化しますか?

外部キーはクエリを高速化しますか?

Barbara Streisand
リリース: 2025-01-05 19:44:40
オリジナル
311 人が閲覧しました

Do Foreign Keys Speed Up Queries?

外部キーとクエリ パフォーマンス

外部キーは参照整合性を強制する上で重要な役割を果たしますが、クエリのパフォーマンスに対する外部キーの影響は誤解されることがよくあります。一般的な考えに反して、外部キー自体はクエリのパフォーマンスを大幅に向上させません。

指定されたシナリオでは、クエリは結合条件として CategoryId フィールドを使用して、Products と ProductCategories の 2 つのテーブルを結合します。外部キー関係にもかかわらず、クエリ プランにはテーブル Products に対するクラスター インデックス スキャンが表示されます。これは、SQL Server が外部キーに基づいてインデックスを自動的に作成しないためです。

このクエリのパフォーマンスを向上させるには、Products.CategoryId フィールドにインデックスを明示的に作成する必要があります。インデックスの作成後、実行プランには両方のテーブルでのインデックス シークが示され、推定サブツリー コストが大幅に削減されます。

したがって、提示された質問に対する答えは次のとおりです。

  • 外部キーはクエリのパフォーマンスを向上させますか?

    • いいえ。外部キーは主に、パフォーマンスの最適化ではなく、データの整合性を目的としています。
  • すべてのテーブルのすべての FK 列にインデックスを作成する必要がありますか?

    • はい。外部キー フィールドでのクエリのパフォーマンスを向上させるには、それらの列にインデックスを明示的に作成する必要があります。これにより、検索が高速化され、テーブル全体のスキャンの可能性が減ります。

以上が外部キーはクエリを高速化しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート