首页 > 数据库 >【后端面经】MySQL主键、唯一索引、联合索引的区别和作用

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

时间:2023-06-18 11:31:37浏览次数:79  
标签:数据表 唯一 索引 查找 MySQL 数据 主键

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

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,数据,主键
From: https://blog.51cto.com/u_15965807/6507926

相关文章

  • MySQL-hash索引
    1哈希索引原理哈希索引原理其实就是hash表,搜索时间效率O(1),搜索效率好,也意味着磁盘IO花费少,mysql底层使用的是链式哈希表,结构如下,每一个bucket就是一个个哈希桶,也就是哈希链表的头结点。哈希结构天然的需要耗费空间资源,是一种用空间换时间的做法2哈希要点:解决哈希冲突的几种方式再......
  • 云原生之使用Docker部署mysql数据库
    (云原生之使用Docker部署mysql数据库)一、检查系统版本[root@node~]#cat/etc/os-releaseNAME="CentOSLinux"VERSION="7(Core)"ID="centos"ID_LIKE="rhelfedora"VERSION_ID="7"PRETTY_NAME="CentOSLinux7(Core)"A......
  • in用不用索引,啥时候能用啥时候不能用,一文说清
    in/or到底能不能用索引应该是肯定的,但有时生效有时不生效,这个能不能量化计算?这是本文想讨论和解答的问题。in到底用不用索引感觉像一桩悬疑片!古早时期的面经,统一说不走索引,在一些程序员脑海中从此留下不可磨灭的印记。有些从业时间较长的程序员脑子里的第一反应就是不走索引,上......
  • 花了一周时间,总算把mysql的加锁搞清楚了,再也不怕间隙锁和next-key了
    接触mysql都知道在mysql中有很多锁,共享锁(S)、排他锁(X)、间隙锁(gap)、next-key,当然还有意向锁、表锁等。今天不讲别的,专门来看下innodb引擎下的锁是什么样子的。现在有这样一条sql语句,你知道是什么锁吗?updatetsetname='1'whereid=10;可能会说是锁住id=10的行锁吧,没错行锁是一......
  • 10. docker方式下的mysql设置主从复制(一主两从)
    上一篇【centos使用docker方式安装mysql】笔记中,我们在三个虚拟机中使用docker方式新建了三个mysql容器服务,那么我们这篇文章来记录下,如何在这三台机器中设置mysql的主从复制功能。其中111服务器作为主节点,112和113两个服务器作为两个从节点,复制111服务器mysq......
  • windows下mysql使用mysqldump定时备份数据库,删除过期备份
    windows下mysql使用mysqldump定时备份数据库,删除过期备份创建备份脚本:@echooffforfiles/p"d:\mysql_backup"/mbackup_*.sql-d-7/c"cmd/cdel/f@path"set"Ymd=%date:~0,4%%date:~5,2%%date:~8,2%"cdD:\Mysql\mysql-8.0.18\binmysqldump--opt......
  • 09. centos使用docker方式安装mysql
    一、创建宿主机物理路径新建/mydata/mysql/data、log和conf三个文件夹mkdir-p/mnt/mysql/logmkdir-p/mnt/mysql/datamkdir-p/mnt/mysql/config或者mkdir/mnt/mysql/{log,data,config}二、直接执行下面这个命令,即可创建成功mysql服务dockerrun-p3306:3306--na......
  • nas docker安装mysql 整理
    前提:群晖nas nas已安装docker一、下载MySQL由于查询注册表失败,所以通过ssh工具xshell连接docker来下载MySQL;xshell下载地址:https://www.xshell.com/zh/free-for-home-school/ (填写相关信息,下载免费版本)nas启用ssh功能: xshell连接nas 1.切换到rootsudo-i ......
  • C++增删改查+MySQL
    右键项目属性 点击编辑 选择mysql安装目录的include文件夹 包含了头文件之后包含库文件 点击编辑在mysql安装路径下面选择  选择编辑之后添加看这个文件下面有没有这个输入的文件依赖 有就代表成功连接数据库 创建数据库:createdatabasestudent_mana......
  • mysql5.7密码策略说明
    一、mysql5.7在创建用户设置密码时提示“ERROR1819(HY000):Yourpassworddoesnotsatisfythecurrentpolicyrequirements”createuser'tom'@localhostidentifiedby'123456';ERROR1819(HY000):Yourpassworddoesnotsatisfythecurrentpolicyrequi......