SQL 复合主键:定义和优化
SQL 中的复合主键使用多个列来唯一标识表中的每一行。 这与单列主键形成对比。 要创建一个,请在 PRIMARY KEY
关键字后面列出关键列。
示例:
假设我们正在构建一个包含 voting
、QuestionID
和 MemberID
字段的 vote
表。 我们将使用 QuestionID
和 MemberID
作为复合主键,确保成员每个问题只能投票一次。
<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中文网其他相关文章!