索引基础
索引的使用:现在索引中找到对应值,然后根据匹配的索引记录找到对应的数据行。
对于有多列的索引,MySQL 只能高效地使用索引的最左前缀列。因此列的顺序很重要。
MySQL 的唯一限制和主键限制都是通过索引实现。
索引的类型
MySQL 中,索引是在存储引擎层而不是服务器层实现的,所以没有统一的索引标准。
B-Tree 索引
B-Tree 通常意味着所有的值都是按顺序存储的,并且每一个叶子页到根的距离相等,适合范围查询。
B-Tree 索引适用于全键值、键值范围或键前缀查找,其中键前缀查找只适用于根据最左前缀的查找。
索引还可以用于查询中的 order by
操作。
B-Tree 索引的限制:
- 如果不是安装索引的最左列开始查找,则无法使用索引。
- 不能跳过索引中的列。
- 如果查询中有某个列的范围查询,则其右边所有列都无法使用索引优化查找。
这些限制是 MySQL 优化器和存储引擎使用索引的方式导致的。