mysql 索引问题

MySQL5.7

我的表 比较简单 只有 id,a,b 三个字段 (id是自增主键)

一开始 表中只有一个索引 a, 发现如下语句走a索引

explain select a,b from t1 where a=998 and b = 13;

后来新增了个 (a,b)联合索引, 结果发现还是走 a 索引, 不走联合索引

后来删除了 索引a, 只保留 (a,b)联合索引, 发现上面sql 走了联合索引, 并且是覆盖索引

之后又加上 索引a, 发现走的还是 (a,b)联合索引

那为什么一开始一直走索引a呢? 感觉好像缓存了什么似的..... 好奇怪

阅读 1.6k
1 个回答

Mysql 优化器默认基于RBO成本计算,哪个成本快,用哪个,不一定就是最优解。

另外建索引一般只需建a,b 和 b 两对索引,不会建a,b 和 a(这个没必要而且增加维护成本)。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题