如果在一个列上同时建唯一索引和普通索引的话,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. 每个表只能有一个。

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

  1. mysql与spring隔离级别不同_mysql事务隔离级别与spring事务隔离级别的区别

    mysql事务隔离级别与spring事务隔离级别的区别: 脏读:为什么会出现脏读,因为你对数据库的任何修改都会是立即生效的,至于别人能不能看到主要取决与你 是否加锁了,数据库的执行与事务没有关系,事务 ...

  2. MySQL索引效率对比_mysql下普通索引和唯一索引的效率对比

    抓的这几个都是第一次执行的,刷了几次后,取平均值,效率大致相同,而且如果在一个列上同时建唯一索引和普通索引的话,mysql会自动选择唯一索引. 谷歌一下: 唯一索引和普通索引使用的结构都是B-tree ...

  3. mysql中创建唯一索引的关键字_mysql中唯一索引的关键字是什么

    mysql中唯一索引的关键字是unique index.创建唯一索引可以避免数据出现重复.唯一索引可以有多个,但索引列的值必须唯一,索引列的值允许有空值.创建唯一索引可以使用关键字UNIQUE随表一同 ...

  4. mysql唯一索引什么意思_MySQL唯一索引什么意思

    如果确定某个数据列只包含彼此各不相同的值,在为这个数据列创建索引的时候,就应该用关键字UNIQUE把它定义为一个唯一索引. Mysql会在有新纪录插入数据表时,自动检查新纪录的这个字段的值是否已经在某 ...

  5. mysql唯一索引的关键字_mysql中唯一索引的关键字是什么

    mysql中唯一索引的关键字是unique index.创建唯一索引可以避免数据出现重复.唯一索引可以有多个,但索引列的值必须唯一,索引列的值允许有空值.创建唯一索引可以使用关键字UNIQUE随表一同 ...

  6. MySql单张表中,“多个唯一字段”的插入和更新操作----添加联合唯一索引,Navicat上操作

    由于是入门的小白,在项目中遇到了类似的问题,做如下记录. 1.问题场景 开始本篇之前,先说下我遇到的问题场景,实际开发的场景为例: 开发中有一张用户表tb_device_user , 用来记录设备上的 ...

  7. mysql 索引与约束_MySQL之索引与约束条件

    字段约束 作用 顾名思义就是给字段加以限制 其保证数据库的完整性与一致性 通过约束条件防止数据库产生一些不必要的数据 保证数据库的正确性 相容性 安全性 null和not null mysql> ...

  8. mysql 索引生命周期_MYSQL 索引(一)--- 简介

    简介 Mysql 官方定义 : 索引(Index) 是帮助 Mysql 高效获取数据的数据结构. 索引的目的在于提交查询效率,可以类比字典.简单理解为 "排好序的快读查找数据结构" ...

  9. mysql 排序字段是否需要建索引_MySQL索引详解(优缺点,何时需要/不需要创建索引,索引及sql语句的优化)...

    一.什么是索引? 索引是对数据库表中的一列或多列值进行排序的一种结构,使用索引可以快速访问数据库表中的特定信息. 二.索引的作用? 索引相当于图书上的目录,可以根据目录上的页码快速找到所需的内容,提高 ...

  10. mysql索引底层图_MySQL索引底层数据结构

    一.何为索引? 1.索引是帮助数据库高效获取数据的排好序的数据结构. 2.索引存储在文件中. 3.索引建多了会影响增删改效率.(一张表最多允许建16个索引) (下面这张图为计算机组成原理内容,每查询一 ...

最新文章

  1. 四十七、磁盘调度算法
  2. P3321 [SDOI2015]序列统计
  3. 自己动手实现OpenGL!
  4. 用set和shopt设置bash选项
  5. Flexbox 布局 – 表单
  6. Halcon算子学习:get_sheet_of_light_result
  7. 计算机网络基础系列(四)HTTP、七层模型及其内部对应协议
  8. 在Android开发中如何移除EditText上的输入焦点
  9. 新员工入职表_员工离职率过高,只要三步骤,就能轻松有效控制!
  10. 物联网 毕业设计——方案选择
  11. android gralloc流程分析for msm8960
  12. Qt散点图、折线图、柱状图、盒须图、饼状图、雷达图开发实例
  13. 利用计算机及网络系统支持考试的方式是,2012年7月全国自主考试(网络操作系统)真题...
  14. 3.2 基本数据类型
  15. DIY智能家居语音助理——语音智控万物
  16. epson连接计算机后无法打印,EPSON针式打印机连接正常无法打印解决
  17. 神秘感十足的磁悬浮盆栽,敢不敢剁手来一款?
  18. 网络摄像机镜头毫米数如何选择
  19. 安装MySQL报错:[Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defau
  20. Android多线程实现方式及并发与同步,架构师必备技能

热门文章

  1. 东芝服务器报错误代码维修,东芝复印机维修故障代码
  2. python中的sort和sorted是什么意思_python中sort和sorted的另类用法
  3. 赋能未来的昆腾全新Scalar存储平台
  4. 磁带非但没被淘汰,容量还比硬盘大了???
  5. 赶超磁盘的磁带备份技术
  6. Linux中如何查看Hadoop版本以及Java版本
  7. java试题及答案下载_java练习题与答案百度云下载.doc
  8. Java练习题11.2 方法的重载
  9. python修改pdf文件
  10. linux中原子量的学习和理解