You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MySQL 8查询未使用id索引反而执行全表扫描的问题求助

MySQL 8查询未使用id索引反而执行全表扫描的问题求助

各位大佬好,我碰到一个MySQL 8的棘手问题,想请教下大家的解决方案:

我用的数据库引擎是MySQL 8,有一张user_actions表,其中id字段是int类型,并且已经在这个字段上创建了名为index_id的索引。最近执行一条简单查询时,明明where条件是通过id in (3,5,7,34,56)来过滤的,但查询却没有用上这个索引,反而走了全表扫描。

我已经更新过这张表的统计信息了,而且同样的查询在MariaDB里是能正常使用索引的。我不想修改查询语句来加FORCE INDEX,希望能让MySQL的优化器自己选择使用索引。

下面是这条查询的执行计划:

1   SIMPLE  user_actions        ALL index_id                558242932   0.0 Using where; Using parallel query (2 columns, 1 filters, 1 exprs; 0 extra)

1   SIMPLE  user_actions        eq_ref  PRIMARY PRIMARY 8   db.user_actions.id  1   100.0

备注:内容来源于stack exchange,提问作者james nathan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.22 11:55:28