唯一索引
在同一张表,唯一索引字段的值都是唯一的
可以为null,且可以为多个null值
通常是非聚簇索引
为什么说通常呢?
因为我们可能忘了设置主键索引,那么MySQL就会默认选择一个唯一非空索引作为主键,如果没有,就
会使用row_id
是怎么保证唯一性的?
和主键索引的区别
是否可以为null
是否回表
是否可以有多个
索引类型不同
是否可以为外键
缺点
没有银弹,插入时需要判断是否存在存在
更新索引列字段时,需要先删除原记录,再判断新插入的值是否唯一,再插入(InnoDB帮我们自动完
成的)
这里说的是b+树索引结构的变化

d字段,建了一个索引D,允许为null,那么当 select * from table where d is null,select * from table where d is not null这两条sql,在唯一索引和普通索引下有什么区别?
首先我们可以把索引中的null看成最小值
那么无论是前者还是后者都可以从左开始扫描。但是全表扫,还是索引扫,得看查询优化器的评估或者是
否可以命中索引覆盖