MySQL——强制索引优化背后的学习
1. 背景
某天,遇到一个神奇的SQL语句。神奇点如下:
- 同一条SQL语句,当参数不同时,查询速度相差很大;
- 在对该条SQL语句进行优化时,使用强制走某个索引后,查询速度从5s到0.05ms;
针对以上问题,记录下整个优化过程及背后的原理。
2. 慢SQL语句
以下为脱敏后的SQL语句:
SELECT
a2.fieldmenu_id
FROM
a2
INNER JOIN m2 ON a2.fieldmenu_id = m2.id
AND m2.client_id = '123'
AND m2.state = 1
AND m2.unable = 1
AND m2.type = 0
INNER JOIN b2 ON a2.id = b2.fieldresources_id
AND b2.state = 1
AND b2.unable = 1
INNER JOIN c2 ON b2