ホームページ > データベース > mysql チュートリアル > SQL で複合主キーを定義および最適化するにはどうすればよいですか?

SQL で複合主キーを定義および最適化するにはどうすればよいですか?

Patricia Arquette
リリース: 2025-01-10 20:15:42
オリジナル
483 人が閲覧しました

How Do I Define and Optimize a Composite Primary Key in SQL?

SQL 複合主キー: 定義と最適化

SQL の複合主キーは、複数の列を使用してテーブル内の各行を一意に識別します。 これは、単一列の主キーとは対照的です。 作成するには、PRIMARY KEY キーワードの後に​​キー列をリストします。

例:

votingQuestionID、および MemberID フィールドを含む vote テーブルを構築しているとします。 QuestionIDMemberID を複合主キーとして使用し、メンバーが質問ごとに 1 回だけ投票できるようにします。

<code class="language-sql">CREATE TABLE voting (
  QuestionID NUMERIC,
  MemberID NUMERIC,
  vote VARCHAR(255),
  PRIMARY KEY (QuestionID, MemberID)
);</code>
ログイン後にコピー

QuestionIDMemberID の組み合わせにより、各レコードを一意に識別します。 重要なのは、QuestionIDMemberIDNULL 値を含めることはできません。

パフォーマンスに対するインデックスの影響:

  • クエリの最適化: 本質的にインデックスが付けられた複合主キーにより、その構成列のいずれかでフィルタリングする際のクエリ速度が向上します。
  • キー順序の重要性: 主キー定義内の列の順序は、クエリ中のインデックスの選択に直接影響します。 慎重な検討が必要です。

戦略的な追加インデックス作成:

主キー以外の列に対して頻繁にクエリを実行しますか? これらの列に個別のインデックスを作成することは、パフォーマンスの最適化戦略です。

たとえば、MemberID テーブルのクエリで voting が頻繁に使用される場合、追加のインデックスが有益である可能性があります。

<code class="language-sql">CREATE UNIQUE INDEX idx1 ON voting (MemberID, QuestionID);</code>
ログイン後にコピー

これにより、MemberIDQuestionID を使用して一意のインデックスが作成されます。 クエリ パターンに合わせて、順序が主キーの順序と異なる場合があることに注意してください。 最適なインデックス順序の選択は、最も頻繁に使用されるクエリの種類によって異なります。

以上がSQL で複合主キーを定義および最適化するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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