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

索引范围扫描为何触发Using index condition?已创建对应索引仍出现该问题

问题解答

首先明确:Using index condition是MySQL**索引条件下推(ICP)**的标识,这不是索引没生效的表现,反而是基于idx_price索引做的优化行为。

出现这个标识的核心原因,是你忽略了二级索引的结构和查询的字段需求:

  • 你的idx_price是仅包含price字段的二级索引,而二级索引的叶子节点会自动附带聚簇键id,所以通过它能过滤出符合price < 20000的id;
  • 但查询需要的name字段不在idx_price索引中,数据库原本需要先过滤出符合条件的id,再回表到聚簇索引取name。ICP的作用是把price < 20000的过滤逻辑提前到存储引擎层执行,减少需要回表的记录数,因此执行计划会显示Using index condition。

如果想消除这个标识并避免回表,你可以把name加入到idx_price中,创建覆盖索引:

CREATE INDEX idx_price_name ON product(price, name);

此时执行select id , name from product where price < 20000,执行计划的Extra会变为Using index(覆盖索引扫描,无需回表),也就不会出现Using index condition了。

内容的提问来源于stack exchange,提问作者tray

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 03:34:49