有索引的情况下,Mysql还是扫表,怎么回事 这两天碰到一个这个问题:在where语句中有一个字段可以走二级索引去范围查的情况下,发现mysql并没有走索引,而是扫表。不知道大家有没有遇到过这个问题。 为什么mysql在明明有索引的情况下却选择不走索引,而选择扫表呢?今天我们从InnoDB的索引原理讲一下为什么会出现这种现象。 InnoDB索引原理 InnoDB对于PK的索引策略和二级索引的策略是不一样的。 部分知识来自于《高性能MySQL》,以及我自己的理解,本人没有看过源码,所以大家对内容要自行甄别对错,自己思考,不要以我为准 数据结构 InnoDB的索引数据结构是B树,更准确的说是B+树...