从原理上理解MySQL的优化建议
概述 自从学习 MySQL 以来,我们一直听到或者看到很多优化建议,比如说不要用 select * 查询,用什么字段就查什么字段;建议用自增主键来作为表的主键,等等。这些建议听得很多感觉都成了 MySQL 开发的常识了,但是对于这些优化建议,我们有没有想过为什么要这么做呢?这篇博文我们从 MySQL 的原理出发,来解释下为什么有这些优化建议? 本文实验环境 MySQL 5.7.25 预备知识 B+ 树索引 MySQL 的默认存储引擎 InnoDB 使用 B+ 树来存储数据的,所以在分析优化建议之前,我们有必要了解 B+ 树索引的基本原理。 上图是一个 B + 树索引示意图(B+ 树的定义可以看这里),每个节点表示一个磁盘块,也可以理解为数据库中的页。我们来分析下 B+ 树索引的查找过程,如果我要查询主键为 35 的数据,索引会怎么走呢?首先会判断 35 小于根节点 37 ,继续查询左子树,判断 35 大于 22 和 33 那么进入其右子树,找到了叶子节点 33 ,继续遍历找到了 35 ,最后取出其 data 即可。在索引的情况下,查询 35 只用了3次 IO 操作,这是非常高效的。在真...
