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来强制使用某一索引了。
00
相似问题