【后端面经】MySQL主键、唯一索引、联合索引的区别和作用

端面,mysql,主键,唯一,索引,联合,区别,作用 · 浏览次数 : 160

小编点评

**目录** * 0. 简介 * 1. 主键 * 2. 唯一索引 * 3. 联合索引 * 4. 索引对数据库操作的影响 * 5. 其他索引 * 5.1 普通索引 * 5.2 全文索引 * 5.3 前缀索引 * 6. 总结 * 7. 参考资料 **0. 简介** 索引是一类特殊文件,用来存储和索引数据库中的数据,使数据库查找更加快速。索引可以根据不同的类型,例如主键、唯一索引、联合索引等,来提高数据库的查询效率。 **1. 主键** 主键是一类特殊的唯一索引,用于选择某一列元素作为主键,用来表示每一行元素的特殊性。主键的特点如下: *主键不能为空(null)。 *主键的列数据不能重复(唯一索引的特点)。 **2. 唯一索引** 唯一索引是数据库中的一个索引类型,用于保证某列元素的数据唯一性。其特点如下: *一个数据表中可以有多个唯一索引。 *唯一索引可以为空(null)。 *唯一索引的列数据不能重复。 **3. 联合索引** 当一个索引由多个列组成时,称为联合索引,主要用于快速查找某一特殊元素。联合索引的列顺序很重要,因为索引文件中的排序会影响查询结果。 **4. 索引对数据库操作的影响** 索引的使用目的是为了加快查找数据的速度。当索引文件位于数据文件之外时,读(查找数据)通过检索索引文件而不是整个数据库文件,能够加快读数据的速度。写(更新数据、增删改)索引文件是独立于数据文件的,因此在写数据的时候,需要同时更新索引文件和数据文件,因此会降低写数据的速度。 **5. 其他索引** * **普通索引**允许列数据重复,作用是加快数据访问速度。 * **全文索引**仅针对字符串类型的数据,只索引字符串的前几个字符,而不是整个字符串。 * **前缀索引**仅针对字符串类型的数据,只索引字符串的前几个字符,而不是整个字符串。 **6. 总结** 索引是数据库中的一个重要工具,可以显著提高数据库的查询效率。选择合适的索引类型可以提升查询性能,并最终提高用户体验。 **7. 参考资料** * 博客-1 * 博客-2

正文

0. 简介

索引是一类特殊的文件,用来存储检索信息,使数据库查找更加快速。

1. 主键

主键是一类特殊的唯一索引,选择某一列元素作为主键,用来表示每一行元素的特殊性,其特点如下

  • 在一个数据表中只有一个主键;
  • 主键不能为空(null);
  • 主键的列数据不能重复(唯一索引的特点)。

2. 唯一索引

唯一索引是数据库中的一个索引类型,用来保证某列元素的数据唯一性,其特点如下:

  • 一个数据表中可以有多个唯一索引;
  • 唯一索引可以为空(null);
  • 唯一索引的列数据不能重复。

3. 联合索引

当一个索引由多个列组成时,称为联合索引,主要用于快速查找某一特殊元素,其特点如下:

  • 列顺序很重要:ABC和CBA是两类不同的联合索引;
  • 一个数据表中可以有多个联合索引。

4. 索引对数据库操作的影响

索引的使用目的是为了加快查找数据的速度。

  • 读(查找数据)
    通过检索索引文件而不是整个数据库文件,能够加快读数据的速度。
  • 写(更新数据、增删改)
    索引文件是独立于数据文件的,因此在写数据的时候,需要同时更新索引文件和数据文件,因此会降低写数据的速度。

5. 其他索引

5.1 普通索引

和一般索引相比,允许列数据重复,作用是加快数据访问速度。特点如下:

  • 一个数据表中可以有多个唯一索引;
  • 普通索引可以为空(null);
  • 普通索引的列数据能重复。

5.2 全文索引

用来加快对大文本数据关键字的检索,MySQL5.6之后InnoDB也支持该索引。

5.3 前缀索引

仅针对字符串类型的数据,只索引字符串的前几个字符,而不是整个字符串。因此索引文件更小。

6. 总结

对上述的几种索引的特点对比如下所示:

7. 参考资料

参考博客-1
参考博客-2

与【后端面经】MySQL主键、唯一索引、联合索引的区别和作用相似的内容:

【后端面经】MySQL主键、唯一索引、联合索引的区别和作用

本文介绍了MySQL中主键、唯一索引、联合索引的特点和区别,并且介绍了“索引”对于数据库操作的影响。

【后端面经-数据库】MySQL的存储引擎简介

对于mysql中常用的四类存储引擎MyISAM、InnoDB、MEMORY、MERGE的介绍和性能对比。

【后端面经-数据库】MySQL的事务隔离级别简介

对于数据库常用的事务隔离级别进行解释和区分,并解释三类读取错误——脏读、不可重复读、幻读的区别。

[转帖]Java连接 MySQL详细教程,分享复习经验和后台开发面经

(由于安装了汉化包,英文版的用户可以对应图标来操作) 选中菜单栏文件,之后选择项目结构 选择Libraries 点击+ ![在这里插入图片描述](https://img-blog.csdnimg.cn/20210321181721553.png?x-oss- 【一线大厂Java面试题解析+后端开发学

【后端面经-Java】Java创建线程的方法简介

本文简要介绍了java中创建线程的四种方式,并介绍了线程概念,适合新手阅读。

【后端面经-java】java线程池满的处理策略

本文对java线程池做了具体介绍,并且讨论了java线程池满了之后的拒绝策略。

【后端面经-Spring】Spring 中 bean 的生命周期)

本文简单介绍了spring中bean的生命周期

【后端面经-Java】HashMap详解

本文详细介绍了hashmap,包括基本概念、hashmap数据结构、关键变量和重要方法,并且结合源码进行分析。

【后端面经-Java】Synchronize和ReentrantLock区别

本文介绍了Synchronize和ReentrantLock同步锁的相似和不同点,并指出两者的主要特点和适用场景。

【后端面经-Java】AQS详解

本文介绍了AQS的核心思想、基本架构、实现方法,并对框架中的重要源码方法进行介绍和分析