MySQL索引
本文字数:627 字 | 阅读时长 ≈ 2 min

MySQL索引

本文字数:627 字 | 阅读时长 ≈ 2 min

索引包含一个或多个列的值,MySQL只能高效的利用索引的最左前缀列。所有的优势:

B-Tree
目前使用最多的索引类型。采用B-Tree数据结构来存储数据(每个叶子节点都包含指向下一个叶子节点的指针,从而方便叶子节点的遍历)。B-Tree索引适用于全键值,键值范围,键前缀查找,支持排序。

B-Tree索引的限制:

哈希索引
只有精确匹配索引的所有列,查询才有效。存储引擎会对所有的索引列计算一个哈希值,哈希索引将所有的哈希值存储在索引中,并保存指向每个数据行的指针。

哈希索引限制:

MySQL执行流程

客户端将SQL语句发送给服务端,服务端检查缓存中是否执行过该SQL,若命中缓存,则将结果返回,否则将进行SQL解析和预处理后,生成对应的执行计划,再调用存储引擎的API执行查询,并将查询结果返回给客户端,若开启缓存,则会备份一份数据到查询缓存中。

缓存->解析器->预处理器->查询优化器->执行计划->存储引擎->数据

Dec 30, 2019