mysql执行计划不走我想要的那个复合索引该如何处理

来源:1-4 大表带来的问题

慕妹9217275

2019-12-08

老师您好!
mysql执行计划不走我想要的那个复合索引,该怎么处理?
我想到的是用force index语法,让其强制走某个索引。

【真实环境如下】
图片描述
SELECT
type,
IFNULL(sum(money), 0) AS money
FROM
deatail
WHERE
(
m_id = 260
AND create_time >= '2019-09-04 00:00:00’
AND create_time <= '2019-09-05 00:00:00’
AND type IN (‘1’, ‘2’,)
)
GROUP BY
type
索引建了好几个复合索引,因为还有很多其他查询场景。用该语句查询的条数为几千条,而阿里云上显示的扫描的却有几十万行,用执行计划分析,它并没有走我想要的索引。

写回答

1回答

sqlercn

2019-12-09

MySQL会跟据统计信息来确定如何使用索引,可以尝试使用analyze table 命令来更新一下表的统计信息看是否使用到了正确的索引,如果还是没有用到的话则只能使用force index来强制使用某一索引了。

0
0

MySQL提升课程 全面讲解MySQL架构设计

面面俱到讲解影响MySQL性能的各个因素,让MySQL架构了然于胸。

4419 学习 · 547 问题

查看课程