mysql 联合索引 (最左前缀优化原则)

B + Tree 与 B - Tree 的区别
mysql 联合索引 (最左前缀优化原则)_第1张图片
mysql 联合索引 (最左前缀优化原则)_第2张图片

1、B - Tree 的叶子节点没有指针,不能更好的支撑范围查找
2、B + Tree 把根节点的非主键元素都放在叶子节点,只放主键元素,叶子节点放的是一些冗余索引。 B - tree 不会放冗余索引 。(上一篇文章里有提及)
一般建议使用联合索引
一张表不建议建立太多的索引,因为每建立一个索引都会建立一颗索引树,也会占存储空间。一般如果索引比较多的话,建议建立联合索引。

为什么innodb 表必须建主键,并且推荐使用整型得自增主键?(性能考虑)
1、innodb 整个表的存储结构他设计就是b+tree 来组织我们整张表的数据,如果建立了主键,默认会根据主键组织整张表的数据。如果没有建立主键,他会从这张表自己找一列(所有元素都不重样(唯一索引)),如果没有唯一列的元素,mysql 会自己维护隐藏的一列来组织这张表的所有数据。
2、整型的自增主键
mysql 联合索引 (最左前缀优化原则)_第3张图片
就找30 来说,步骤是先进行数据的大小比对, 15<30<56,相比 一串字符串uuid (d6713010e14b4895baaf4cd7fa7f61ea 每一位还需要转化 Ascii码)比起来要效率要快点。

3、自增
要插入非自增的主键,会导致树分裂,需要做树的平衡。如果是自增,只会往后面一次添加

联合索引
mysql 联合索引 (最左前缀优化原则)_第4张图片

你可能感兴趣的:(mysql,数据库,java)