数据库 · 单选题 · 第 34 题
计算机基础面试八股 · 第 34 题
InnoDB 中通过普通二级索引查询,需要返回索引中没有的列时,执行过程是?
- A二级索引的叶子节点直接存放了整行数据,不需要再访问别的索引
- B先在二级索引中找到主键值,再到聚簇索引中按主键取出整行(回表)
- C二级索引叶子节点存的是行的物理地址,直接按地址到数据文件读取
- D只要有列不在索引里,就放弃使用该索引,改为对整张表进行扫描
答案
B B. 先在二级索引中找到主键值,再到聚簇索引中按主键取出整行(回表)
解析
InnoDB 是索引组织表,整行数据只存在主键的聚簇索引里,二级索引的叶子节点存的是「索引列 + 主键值」。所以要多走一次主键索引,这叫回表。存物理地址的是 MyISAM 的做法。如果查询的列都在二级索引里,就能形成覆盖索引,省掉回表。