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

复合主键索引场景下EXPLAIN查询行数不符问题咨询

问题分析与解决

核心原因

EXPLAIN输出的rows字段是优化器估算的扫描行数,并非实际查询会返回的真实行数,出现偏差的常见原因如下:

  • 表的统计信息过时:MySQL优化器依赖表的统计信息来估算行数,如果统计信息未及时更新(比如批量插入数据后未刷新统计),优化器就会给出不准确的估算值。
  • 复合索引的统计粒度限制:你的复合主键索引是(Student_Id, date),优化器对复合索引前缀列(此处为Student_Id)的分布统计可能存在粒度不足的问题,导致单值匹配时的行数估算偏差。

验证与解决步骤

  1. 确认真实行数:先执行实际计数查询,确认该Student_Id对应的真实数据量:

    select count(*) from Attendance where Student_Id=40;
    

    这个结果才是该条件下的真实行数,应当和你预期的2500一致。

  2. 更新表统计信息:执行以下命令强制更新表的统计信息,让优化器获得准确的数据分布:

    ANALYZE TABLE Attendance;
    

    之后重新执行EXPLAIN select * from Attendance where Student_Id=40;,此时rows字段的估算值会更接近真实值。

内容的提问来源于stack exchange,提问作者NAVEEN A M 20CSR136

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 22:29:50