SQL 複合主キー: 定義と最適化
SQL の複合主キーは、複数の列を使用してテーブル内の各行を一意に識別します。 これは、単一列の主キーとは対照的です。 作成するには、PRIMARY KEY
キーワードの後にキー列をリストします。
例:
voting
、QuestionID
、および MemberID
フィールドを含む vote
テーブルを構築しているとします。 QuestionID
と MemberID
を複合主キーとして使用し、メンバーが質問ごとに 1 回だけ投票できるようにします。
<code class="language-sql">CREATE TABLE voting ( QuestionID NUMERIC, MemberID NUMERIC, vote VARCHAR(255), PRIMARY KEY (QuestionID, MemberID) );</code>
QuestionID
と MemberID
の組み合わせにより、各レコードを一意に識別します。 重要なのは、QuestionID
も MemberID
も NULL
値を含めることはできません。
パフォーマンスに対するインデックスの影響:
戦略的な追加インデックス作成:
主キー以外の列に対して頻繁にクエリを実行しますか? これらの列に個別のインデックスを作成することは、パフォーマンスの最適化戦略です。
たとえば、MemberID
テーブルのクエリで voting
が頻繁に使用される場合、追加のインデックスが有益である可能性があります。
<code class="language-sql">CREATE UNIQUE INDEX idx1 ON voting (MemberID, QuestionID);</code>
これにより、MemberID
と QuestionID
を使用して一意のインデックスが作成されます。 クエリ パターンに合わせて、順序が主キーの順序と異なる場合があることに注意してください。 最適なインデックス順序の選択は、最も頻繁に使用されるクエリの種類によって異なります。
以上がSQL で複合主キーを定義および最適化するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。