MySQL程序员高性能MySQL

MySQL实战 | 05 如何设计高性能的索引?

2018-12-14  本文已影响11人  hoxis

原文链接:MySQL | 05 如何设计高性能的索引?

上回我们主要研究了为什么使用索引,以及索引的数据结构。今天带你了解如何设计高性能的索引。

其中,有这么一个点,说的是 InnoDB 引擎中使用的是聚簇索引,其主索引的实现树中的叶子结点存储的是完整的数据记录,而辅助索引中存储的则只是辅助键和主键的值。

这样在用辅助索引进行查询时,会先查出主键的值,然后再去主索引中根据主键的值查询目标值。

比如,假想一个表如下图存储了 4 行数据。其中 Id 作为主索引,Name 作为辅助索引。

Id Name Company
5 Gates Microsoft
7 Bezos Amazon
11 Jobs Apple
14 Ellison Oracle

对于聚簇索引,若使用主键索引进行查询,select * from tab where id = 14 这样的条件查找主键,则按照 B+ 树的检索算法即可查找到对应的叶节点,之后获得行数据。

若使用辅助索引进行查询,对 Name 列进行条件搜索,则需要两个步骤:

1、第一步在辅助索引 B+ 树中检索 Name,到达其叶子节点获取对应的主键值。
2、第二步根据主键值在主索引 B+ 树中再执行一次 B+ 树检索操作,最终到达叶子节点即可获取整行数据。

上面这个过程称为回表

你的关注是对我最大的鼓励!

最近搜集到传智播客 2018 最新 Python 和 Java 教程!关注本公众号,后台回复「2018」即可获取下载地址。

公众号提供CSDN资源免费下载服务!


上一篇下一篇

猜你喜欢

热点阅读