MySQL 学习笔记

MySQL是一个开源的关系型数据库,非常流行。

如无特殊说明,本专题文章的 SQL 均在 5.6 版本中验证。

👉文章列表
MySQL 学习笔记 ⏬ 创建和删除数据库 切换和查看数据库 创建和删除表 在表中增加、删除、修改列 添加和删除索引 增删查改 创建和删除主键 大小写和反引号 字符串类型值的大小写 SQL注释 CHAR类型 VARCHAR类型 整型数字 时间戳 不要使用utf8 唯一索引与NULL 唯一索引的单列长度限制 NULL的判等 DDL、DML、DCL的含义 查看表的状态 show table status InnoDB存储引擎的限制 if和case的使用 自定义函数 InnoDB 索引 事务 事务隔离级别的概念、查看和修改 读已提交(read committed)隔离级别下的锁 可重复读(repeatable read)隔离级别下的锁 修改自增主键id的类型 使用 load data 快速导入数据 使用 select into outfile 导出数据

MySQL: InnoDB 索引


索引的底层实现

索引用来做什么?用于快速检索数据。

InnoDB的索引基于B+树。行锁是基于索引的。B+树是一种平衡查找树,在基于磁头的硬盘中查找性能很高。

在B+树中,非叶子节点充当的是索引的作用。所有的叶子结点中包含了全部关键字的信息,及指向含这些关键字记录的指针,且叶子结点本身依关键字的大小自小而大顺序链接。

在 MySQL 中,索引有聚集索引和辅助索引之分:

名词 解释
聚集索引 按照一张表的主键构造一颗B+树,叶子节点存放的是整张表的行记录数据。
辅助索引 也叫非聚集索引。 叶节点除了包含键值以外,每个叶级别中的索引行中还包含了一个书签(bookmark),该书签就是相应行数据的聚集索引键。

如果一张表在创建时没设置主键怎么办?没关系,MySQL会帮忙创建一个我们看不到的主键。

另外,索引也可以划分为「唯一索引」和「非唯一索引」。


( 本文完 )

文章目录