【后端面经】MySQL主键、唯一索引、联合索引的区别和作用
0. 简介
索引是一类特殊的文件,用来存储检索信息,使数据库查找更加快速。
1. 主键
主键是一类特殊的唯一索引,选择某一列元素作为主键,用来表示每一行元素的特殊性,其特点如下
- 在一个数据表中只有一个主键;
- 主键不能为空(null);
- 主键的列数据不能重复(唯一索引的特点)。
2. 唯一索引
唯一索引是数据库中的一个索引类型,用来保证某列元素的数据唯一性,其特点如下:
- 一个数据表中可以有多个唯一索引;
- 唯一索引可以为空(null);
- 唯一索引的列数据不能重复。
3. 联合索引
当一个索引由多个列组成时,称为联合索引,主要用于快速查找某一特殊元素,其特点如下:
- 列顺序很重要:ABC和CBA是两类不同的联合索引;
- 一个数据表中可以有多个联合索引。
4. 索引对数据库操作的影响
索引的使用目的是为了加快查找数据的速度。
- 读(查找数据)
通过检索索引文件而不是整个数据库文件,能够加快读数据的速度。 - 写(更新数据、增删改)
索引文件是独立于数据文件的,因此在写数据的时候,需要同时更新索引文件和数据文件,因此会降低写数据的速度。
5. 其他索引
5.1 普通索引
和一般索引相比,允许列数据重复,作用是加快数据访问速度。特点如下:
- 一个数据表中可以有多个唯一索引;
- 普通索引可以为空(null);
- 普通索引的列数据能重复。
5.2 全文索引
用来加快对大文本数据关键字的检索,MySQL5.6之后InnoDB也支持该索引。
5.3 前缀索引
仅针对字符串类型的数据,只索引字符串的前几个字符,而不是整个字符串。因此索引文件更小。
6. 总结
对上述的几种索引的特点对比如下所示:

7. 参考资料
【后端面经】MySQL主键、唯一索引、联合索引的区别和作用的更多相关文章
- Mysql主键索引、唯一索引、普通索引、全文索引、组合索引的区别
原文:Mysql主键索引.唯一索引.普通索引.全文索引.组合索引的区别 Mysql索引概念: 说说Mysql索引,看到一个很少比如:索引就好比一本书的目录,它会让你更快的找到内容,显然目录(索引)并不 ...
- mysql主键,外键,索引
主键 唯一而非空,只能有一个 作用: 1.唯一的标识一行 2.作为一个可以被外键有效引用的对象 3.保证数据完整性 设计原则: 1. 主键应当是对用户没有意义的.如果用户看到了一个表示多对多关系的 ...
- MySQL主键和索引的联系及区别
转载自:http://www.nowamagic.net/librarys/veda/detail/1954 关系数据库依赖于主键,它是数据库物理模式的基石.主键在物理层面上只有两个用途: 惟一地标识 ...
- MySQL主键与索引的区别和联系
MySQL主键与索引的区别和联系 关系数据库依赖于主键,它是数据库物理模式的基石.主键在物理层面上只有两个用途: 惟一地标识一行. 作为一个可以被外键有效引用的对象. 索引是一种特殊的文件(Inn ...
- MySQL主键设计
[TOC] 在项目过程中遇到一个看似极为基础的问题,但是在深入思考后还是引出了不少问题,觉得有必要把这一学习过程进行记录. MySQL主键设计原则 MySQL主键应当是对用户没有意义的. MySQL主 ...
- MYSQL主键自动增加的配置及auto_increment注意事项
文章一 原文地址: http://ej38.com/showinfo/mysql-202971.html 文章二: 点击转入第二篇文章 在数据库应用,我们经常要用到唯一编号.在MySQL中可通过字 ...
- mysql主键问题
版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/qq_22314145/article/details/80824660 MySQL主键 一. MyS ...
- 【SqlServer】聚集索引与主键、非聚集索引
目录结构: contents structure [-] 聚集索引和非聚集索引的区别 聚集索引和主键的区别 主键和(非)聚集索引的常规操作 聚集索引.非聚集索引在SqlServer.MySQL.Ora ...
- MySQL主键设计盘点
目录 主键定义 主键设计和应用原则 主键生成策略 自增ID UUID 自建的id生成器 Twitter的snowflake算法 @ 最近在项目中用了UUID的方式生成主键,一开始只是想把这种UUID的 ...
- mybatis框架(6)---mybatis插入数据后获取自增主键
mybatis插入数据后获取自增主键 首先理解这就话的意思:就是在往数据库表中插入一条数据的同时,返回该条数据在数据库表中的自增主键值. 有什么用呢,举个例子: 你编辑一条新闻,同时需要给该新闻打上标 ...
随机推荐
- ES5新增数组常见方法(indexof/forEach/map/filter)
新增的数组常见方法:以下说明中,红色为必选参数,蓝色为可选参数 1.indexOf(data,start); 用于返回某个数组或者字符串中规定字符或者字符串的位置: var arr = [" ...
- Java多线程(一篇从0讲透)
多线程 思维导图看天下: 1. 概述 并行与并发 并行 :指两个或多个事件在同一时刻发生(同时发生) 并发 :指两个或多个事件在同一个时间段内发生.(交替执行) 线程与进程 进程:是指一个内存中运行的 ...
- jmeter分布式测试安装部署步骤
一.下载linux版本的jdk ----注:下载的jdk和jmeter要与window的jdk和jmeter一致 下载地址:https://www.oracle.com/java/technologi ...
- [Linux/JSON]JSON美化工具:json_pp / jq
json_pp (git-bash内置的用于JSON格式化的管道工具:默认支持) (Linux CentOS7 暂不支持) curl http://localhost:8080/xxxx.json | ...
- 解决svn本身上传没有权限和配置自动更新的钩子
第一步 :建立你的web程序目录和版本库目录 mkdir /data/webwww/project1 svnadmin create /data/svnwww/project1 进入/data/web ...
- 【JavaSE】Java常用类
1.String的特性 代表字符串,java中所有字符串字面值都作为此类的实现例实现.String是一个final类,不能被继承.String实现了Serialiable,表示字符串支持序列化,实现了 ...
- 【SpringCloud】(二)Eureka注册中心和Feign远程调用
1 SpringCloud 核心 SpringCloud基于HTTP协议,这是和Dubbo最本质的区别,Dubbo的核心是RPC(远程方法调用) Eureka:注册中心 Ribbon:客户端负载均衡 ...
- 【Vue项目】尚品汇(六)ShopCar组件开发 购物车模块
4 购物车 4.1 购物车商品数量控制 Detail\index.vue <div class="cartWrap"> <div class="cont ...
- Split to Be Slim: 论文复现
摘要:在本论文中揭示了这样一种现象:一层内的许多特征图共享相似但不相同的模式. 本文分享自华为云社区<Split to Be Slim: 论文复现>,作者: 李长安 . Split to ...
- Spring之AOP理解及使用
文章目录 AOP是什么 AOP Spring的通知类型 1.Before通知 2. AfterReturning通知 3.AfterThrowing通知 4. After通知 5. Around通知 ...