mysql非唯一索引怎么表示_MySQL 唯一索引和非唯一索引(普通索引)区别

如果在一个列上同时建唯一索引和普通索引的话,mysql 会自动选择唯一索引

唯一索引和普通索引使用的结构都是 B-tree,执行时间复杂度都是 O(log n)

普通索引(非唯一索引)

普通索引(由关键字 KEY 或 INDEX 定义的索引)的唯一任务是加快对数据的访问速度。因此,应该只为那些最经常出现在查询条件(WHERE column =)或排序条件(ORDER BY column)中的数据列创建索引。只要有可能,就应该选择一个数据最整齐、最紧凑的数据列(如一个整数类型的数据列)来创建索引

唯一索引

普通索引允许被索引的数据列包含重复的值

如果能确定某个数据列将只包含彼此各不相同的值,在为这个数据列创建索引的时候就应该用关键字 UNIQUE 把它定义为一个唯一索引。这么做的好处:一是简化了 MySQL 对这个索引的管理工作,这个索引也因此而变得更有效率(区分度:distinct * / count (*) 高);二是 MySQL 会在有新记录插入数据表时,自动检查新记录的这个字段的值是否已经在某个记录的这个字段里出现过了;如果是,MySQL 将拒绝插入那条新记录。也就是说,唯一索引可以保证数据记录的唯一性。事实上,在许多场合,人们创建唯一索引的目的往往不是为了提高访问速度,而只是为了避免数据出现重复

主键索引

主键索引是唯一索引的特殊类型

数据库表通常有一列或列组合,其值用来唯一标识表中的每一行。该列称为表的主键

在数据库关系图中为表定义一个主键将自动创建主键索引,主键索引是唯一索引的特殊类型。主键索引要求主键中的每个值是唯一的。当在查询中使用主键索引时,它还允许快速访问数据

它们的一些比较:

(1) 对于主键 MySQL 会自动建立唯一索引;

(2) 主键不一定只包含一个字段,所以可以在主键的其中一个字段建唯一索引;

(3) 主键可作外键,唯一索引不可;

(4) 主键不可为空,唯一索引可;

(5) 主键也可是多个字段的组合;

主键与唯一索引不同的是:

a. 有not null属性;

b. 每个表只能有一个。

参与评论 您还未登录,请先 登录 后发表或查看评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:数字20 设计师:CSDN官方博客 返回首页

打赏作者

笨爪

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值