在 InnoDB 中,一张表有 30 个 varchar(80) 字段,另一张表有 60 个同样的字段,各插入 100 万行后用主键查询一行。两个查询在效率上有差别吗?为什么?
考察说明
考察 InnoDB 行存储结构、主键索引叶节点大小及 IO 对查询性能的影响
回答思路
- 能指出主键查询走聚簇索引,主要成本在于读取目标数据页
- 能分析行大小与页大小(16KB)的关系,说明大行会增加页内行数减少
- 能解释大表(行更宽)在随机主键下更易触发更多页读取(页分裂/碎片),顺序主键下差别较小
- 能说明小行表可能一次 IO 读入更多行,但主键定位后只需读取目标行所在页
- 能区分查询返回列数是否影响性能(是否使用覆盖索引或返回所有列)