唯一索引小结

唯一索引(UNIQUE KEY)

不允许具有索引值相同的行,从而禁止重复的索引或键值。

严格意义上讲,应该叫做唯一约束。

在唯一约束上,和主键一样(以MyISAM引擎为代表)。

其他不同的方面:

1.唯一索引允许有空值。

2.一个表只能有一个主键,但可以有多个唯一索引。

3.InnoDB表中主键必须是聚集索引,但聚集索引可能不是主键。

4.唯一索引约束可临时禁用,但主键不行。

时间: 2024-10-12 19:43:48

唯一索引小结的相关文章

普通索引和唯一索引的区别

1.概念 不同的业务场景下,应该选择普通索引,还是唯一索引? 假设你在维护一个市民系统,每个人都有一个唯一的身份证号,而且业务代码已经保证了不会写入两个重复的身份证号.如果市民系统需要按照身份证号查姓名,就会执行类似这样的SQL语句: select name from CUser where id_card = 'xxxxxxxyyyyyyzzzzz'; 所以,你一定会考虑在id_card字段上建索引. 由于身份证号字段比较大,我不建议你把身份证号当做主键,那么现在你有两个选择,要么给id_ca

普通索引和唯一索引,应该怎么选择?

如果业务能保证唯一性的情况下,还是选择普通索引性能更好 select id from T where k=5 首先,我们看下 查询过程 对于普通索引来说,查询到满足条件的第一个记录后,需要查找下一个记录,直到碰到第一个不满足k=5条件的记录 对于唯一索引来说,由于索引上有唯一性,查询到第一个满足条件的记录后就停止检索了 所以在这里的区别就是普通索引会多查那么一下,那么这两种的性能差别有多大呢? 答案是微乎其微,为甚呢? 因为mysql在读数据的时候,比如说上面那条语句,如果没有在内存中,会去磁盘

09 | 普通索引和唯一索引,应该怎么选择?

今天的正文开始前,我要特意感谢一下评论区几位留下高质量留言的同学. 用户名是 @某.人 的同学,对文章的知识点做了梳理,然后提了关于事务可见性的问题,就是先启动但是后提交的事务,对数据可见性的影响.@夏日雨同学也提到了这个问题,我在置顶评论中回复了,今天的文章末尾也会再展开说明.@Justin和@倪大人两位同学提了两个好问题. 对于能够引发更深一步思考的问题,我会在回复的内容中写上“好问题”三个字,方便你搜索,你也可以去看看他们的留言. 非常感谢大家很细致地看文章,并且留下了那么多和很高质量的留

普通索引和唯一索引如何选择(谈谈change buffer)

假设有一张市民表(本篇只需要用其中的name和id_card字段,有兴趣的可以翻看“索引”篇,里面有建表语句) 每个人都有一个唯一的身份证号,且业务代码已经保证不会重复. 由于业务需求,市民需要按身份证查找对应姓名,即执行如下sql select name from CUser where id_card = 'xxxxxxxyyyyyyzzzzz'; 我们自然会想在id_card上建索引.因为该字段较大,一般不建议直接作为主键. 于是我们面临选择:是建普通索引还是唯一索引——结合前面的背景说明

给有重复记录的表添加唯一索引

不希望数据表中有重复记录的时候我们可以给表添加一个联合唯一索引例如,user表中有user_id,user_name两个字段,如果不希望有两条一摸一样的的user_id和user_name,我们可以给user表添加两个字段的联合唯一索引:alter table user add unique index(user_id,user_name); 这样当向表中添加相同记录的时候,会返回1062的添加失败信息.但是有一种情况是表中已经有n个重复的记录,这时候我们才想起来要添加唯一索引,再执行上面的操作

主键,组合主键,聚集索引,非聚集索引,唯一索引

前言: 基于Oracle数据库谈谈索引们的问题,以及在什么情况下使用什么索引, 组合主键,怎么根据实际业务需求来定制自己的索引,主键的应用,来提升系统的性能. 1:主键? 在表中唯一的,也是聚集索引.作用于快速查询.该列唯一. Java代码 复制代码 收藏代码 1.ID NUMBER(38,0) PRIMARY KEY NOT NULL, 2:组合主键? 在表中以多个字段组成在表中是唯一的,也是聚集索引.作用于快速查询.该组合列唯一. Java代码 复制代码 收藏代码 1.CREATE TABL

唯一索引、聚集索引和费聚集索引

1.一个表只能有一个主索引-PRIMARY,且只有是数据库表才有主索引,后缀为.CDX,索引关键字是不可以重复的.哪怕是空记录也只可以有一条.2.候选索引可以有很多个,索引关键字同样不可以重复,同样只存在于数据库表.3.唯一索引,可以存在于自由表,但索引关键字不可以重复.4.普通索引简单的理解就是只起排序作用.索引关键字是可以重复的.可存在于自由表. 主键与唯一索引的区别 主键是一种约束,唯一索引是一种索引,两者在本质上是不同的. 主键创建后一定包含一个唯一性索引,唯一性索引并不一定就是主键.

SQL存储原理及聚集索引、非聚集索引、唯一索引、主键约束的关系(补)

索引类型 1.          唯一索引:唯一索引不允许两行具有相同的索引值 2.          主键索引:为表定义一个主键将自动创建主键索引,主键索引是唯一索引的特殊类型.主键索引要求主键中的每个值是唯一的,并且不能为空 3.          聚集索引(Clustered):表中各行的物理顺序与键值的逻辑(索引)顺序相同,每个表只能有一个 4.          非聚集索引(Non-clustered):非聚集索引指定表的逻辑顺序.数据存储在一个位置,索引存储在另一个位置,索引中包含指

主键、自增主键、主键索引、唯一索引概念区别与性能区别

概念区别: 主键:指字段唯一不为空值的列. 主键索引:指的就是主键,主键没有明确的概念定义,主键既是约束,也是索引,主键是索引的一种,是唯一索引的特殊类型.创建主键的时候,数据库默认会为主键创建一个唯一索引. 自增主键:字段类型为数字.自增.并且是主键. 唯一索引:索引列的值必须唯一,但允许有空值.主键是唯一索引,这样说没错.但反火来说唯一索引也是主键就错误了,因为唯一索引允许空值,主键不允许有空值,所以不能说唯一索引也是主键. 性能区别: 通过测试,发现主键.自增主键.唯一索引的查询效率不一样