基本上,主键是(在实现级别)一种特殊的索引.特别:
>一个表只能有一个主键,除了极少数例外,每个表都应该有一个.
>主键是隐式UNIQUE – 您不能有多个具有相同主键的行,因为它的目的是唯一标识行.
>主键永远不能为NULL,因此它所包含的行必须为NOT NULL
一个表可以有多个索引,索引不一定是UNIQUE.索引存在有两个原因:
>强制执行单一约束(这些可以在声明列UNIQUE时隐式创建)>提高绩效.在具有索引的列上,WHERE子句以及JOIN中的相等或“大于/小于”的比较要快得多.但请注意,每个索引都会降低更新/插入/删除性能,因此您应该只将它们放在实际需要的位置.