MySQL 索引选择原则分析(一)
目的 数据库中很重要的设计一部分,莫过于索引了。 B+树索引是 MySQL中设计的索引。B+树索引是基于B+树基础发展而来的。 然而,在理解了B+树索引结构以后,对优化SQL会事 半 功 倍 。还针对前面 MySQL索引选择规则 文章做进一步分析。 1:B+树 与 B+树索引 区别 B+树 B+树索引 存储位置 内存 磁盘 扇出率 低 高 并发控制 可以不考虑 需要考虑 分裂方向 不需要考虑 向左、向右 上图中列出两者的区别,光看图片可能不能理解每个区别对应的含义。 下面就来分析一下重要的区别: 1.1:存储位置: B+树 是为磁盘或其他直接存取辅助设备而设计的一种平衡查找树,因此主要操作是计算不需要文件来存储,也就是在内存来操作的。 B+树索引 是基于磁盘,因此数据库会出现索引文件,索引文件就是存储在磁盘上的。 1.2:分裂方向 B+树 是内存结构,不需要考虑页分裂的方向。 B+树索引 在磁盘上,为了充分利用磁盘的顺序特性,还需要根据不同插入情况考虑不同的分裂点记录以及分裂的方向。 2:MySQL的InnoDB存储引擎的索引设计 InnoDB存储引擎将B+树索引分为聚集索引和辅助索引。 聚集索引是通过将表的主键作为键值来构造B+树。如果没有显示创建,自动创建一个6字节的主键。聚集索引还包含记录所有列信息。 2.1:存储结构 聚集索引的非叶子点存放的是<键值, 地址>