✅唯一索引和主键索引的区别?
典型回答
唯一索引和主键索引是数据库中两种常见的索引类型。他们之所以放在一起比较,是因为他们都需要保证唯一性。但是他们还是有很多区别的。
唯一性:主键索引其实是一种特殊的唯一索引,他们都具有唯一性;也就是在一张表中,不能有两行有相同的主键;在同一张表中,主键索引字段的所有值都是唯一的。
是否可空:主键索引是不能为NULL的,而唯一键索引是可以为NULL的。
是否可以有多个:主键索引在一张表中只能有一个,而唯一索引在一张表中可以创建多个。
索引结构:在InnoDB中,主键索引就是聚簇索引,而唯一索引通常是非聚簇索引。
为啥说唯一索引通常是非聚簇索引呢?
这是因为有的时候,我们可能没有创建主键索引,那么,MySQL会默认选择一个唯一的非空索引作为聚簇索引。所以,唯一索引也可能被选为聚簇索引。
是否回表:基于主键索引的查询一定不需要回表,基于唯一索引的查询,通常是需要回表的(这里的通常和上面的通常是一个事儿)
**外键:**主键可以被其他表引用为外键,而唯一索引是不可以的。