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

MySQL Explain中ref=const,const含义及执行计划相关疑问

问题核心原因

你遇到的情况是因为联合索引的两个列都用了等值常量匹配,MySQL优化器可以直接通过索引定位到唯一数据行;如果查询的列都包含在索引中(覆盖索引),就会触发Using index。而Using index condition(ICP)是针对索引列存在范围条件、需要存储引擎层提前过滤的场景,这里完全不需要,所以不会出现。

ref=const,const的工作原理
  • ref列表示MySQL匹配索引时的关联类型,const代表常量等值匹配:当你用col1=固定值 AND col2=固定值这类条件时,联合索引的每一列都对应一个确定的常量,优化器能直接定位到索引中唯一的条目,不需要扫描范围或全索引。
  • 这种场景下,MySQL会把常量值直接和索引列做匹配,是索引查询里效率最高的级别之一,因为不需要任何额外扫描,直接命中目标数据。
Using index vs Using index condition(ICP)的核心区别
特性Using indexUsing index condition (ICP)
适用场景查询所需所有列都在索引中(覆盖索引),且索引列全为等值匹配WHERE子句包含索引列(含范围条件)+ 非索引列,需要存储引擎先过滤索引数据
数据读取逻辑直接从索引中获取所有需要的数据,无需回表到主键索引存储引擎先利用索引过滤部分数据,再将结果返回Server层过滤非索引列条件,可能需要回表
触发条件覆盖索引 + 索引列全等值匹配索引列存在范围/部分匹配,且有非索引列过滤条件

直白解释:

  • Using index:相当于“索引里已经有我要的所有东西,直接拿了就走,不用再去主表找”。
  • Using index condition:相当于“先让存储引擎用索引筛掉大部分不符合的数据,剩下的再交给Server层核对非索引条件,省得把全表数据都拉上来检查”。
验证方法

1. 验证ref=const,const的触发条件

  • 执行等值匹配查询:
    EXPLAIN SELECT col1, col2 FROM your_table WHERE col1=100 AND col2='abc';
    
    此时ref列会显示const,const,因为两个索引列都是常量等值匹配。
  • 修改为范围查询:
    EXPLAIN SELECT col1, col2 FROM your_table WHERE col1>100 AND col2='abc';
    
    此时ref列会变成NULL(或显示range),因为col1是范围匹配,无法用常量直接定位唯一索引条目。

2. 验证Using index与ICP的区别

  • 触发Using index:确保查询的所有列都在联合索引中,且索引列全等值匹配:

    -- 假设联合索引是(col1, col2),查询列只有col1和col2
    EXPLAIN SELECT col1, col2 FROM your_table WHERE col1=100 AND col2='abc';
    

    Extra列会显示Using index,因为不需要回表,所有数据都在索引里。

  • 触发Using index condition:给索引列加范围条件,同时加入非索引列的过滤条件:

    -- 联合索引是(col1, col2),查询包含非索引列non_col,且col1用范围条件
    EXPLAIN SELECT * FROM your_table WHERE col1>100 AND col2='abc' AND non_col='test';
    

    Extra列会显示Using index condition,因为存储引擎会先通过col1>100 AND col2='abc'过滤索引条目,再把数据传给Server层检查non_col='test'。

3. 验证ICP不触发的场景

当索引列全为等值匹配时,即使有非索引列条件,也不会触发ICP:

EXPLAIN SELECT non_col FROM your_table WHERE col1=100 AND col2='abc';

此时Extra列不会显示Using index condition,因为优化器直接通过联合索引定位到唯一行,直接回表取non_col即可,不需要中间过滤步骤。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 07:25:57