对线面试官 - 如何理解MySQL的索引覆盖和索引下推
发布网友
发布时间:2024-10-17 21:52
我来回答
共1个回答
热心网友
时间:2024-11-30 17:56
面试官询问派大星对MySQL索引的理解,首先是覆盖索引,即查询时所需数据完全可以在索引中获取,无需访问数据表,能提高查询效率。比如,查询covering_tabel表中key1,当key1='ketvalue'时,通过idx_key1_key2索引即可完成,无需回表。但索引覆盖需满足最左前缀匹配和查询字段包含在联合索引中,否则无法利用索引。
索引下推是MySQL 5.6引入的优化技术,通过它,MySQL可以在执行SQL时,直接在索引中应用部分条件,减少回表操作。比如,未使用下推时,MySQL会先查所有数据再筛选,而开启下推则在筛选阶段就利用索引。extra字段显示为"Using index condition"表明使用了索引下推。索引下推并非仅限于LIKE条件,其实对于索引失效的联合索引,只要能通过非聚簇索引找到主键,也能应用下推优化。
回表是指InnoDB存储引擎中,非主键索引查询时,先找到主键再根据主键查询实际数据的过程。通过优化主键查询、使用覆盖索引和索引下推,可以减少回表次数,提高查询效率。