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

MySQL EXPLAIN中单行表查询type为何为const而非system?

单行InnoDB表主键查询EXPLAIN结果为const而非system的原因

你遇到的这个现象是存储引擎特性和system类型触发规则共同作用的结果,具体原因如下:

  • system类型的触发存在隐含限制:官方文档中提到的「表仅有一行数据时命中system类型」的规则,仅适用于两类表:一是MySQL内置的系统表,二是使用MyISAM、MEMORY等非事务型存储引擎的用户表。非事务引擎会精确存储表的总行数,优化器可以确认表行数固定为1时,才会返回system类型。
  • InnoDB引擎不支持system类型判定:你测试使用的test_system表采用InnoDB存储引擎,InnoDB的表行数为动态估算值,即使当前表仅存1行数据,优化器也不会判定该表行数会永久固定为1,因此不会触发system类型,只会按照主键等值查询的规则判定为const类型。

如果你想要验证规则,可以执行以下语句将表修改为MyISAM引擎:

ALTER TABLE test_system ENGINE = MYISAM;

修改完成后再次执行相同的EXPLAIN查询,就可以看到type字段变为system。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.20 17:27:00