MySQL limit导致索引选择(选择的并不是最佳索引)案例分析

2023-12-13 04:42:01

mysql limit导致索引选择(选择的并不是最佳索引)案例分析:

这种情况可能是mysql优化器内部bug造成:

bug 触发条件如下:

??? 1.优化器先选择了 where 条件中字段的索引,该索引过滤性较好;

??? 2.SQL 中必须有 order by limit 从而引导优化器尝试使用 order by 字段上的索引进行优化,最终因代价问题没有成功。

举例说明:

触发bug的SQL

上面的sql 由于使用了order by id limit 操作,mysql优化器尝试使用 order by 字段上的索引进行优化,最终因代价问题没有成功。也就是上面看到的执行计划里,虽然选择了id这个索引,但是Extra 还是Using where

使用 force index 可以选择过滤性好的索引

最终对比执行效果:

优化前:

优化后:

文章来源:https://blog.csdn.net/shiyu1157758655/article/details/134802227
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。