如何避免回表查询?什么是索引覆盖? | 1分钟MySQL优化系列
发布时间:2019-07-29 04:30:45 所属栏目:MySql教程 来源:58沈剑
导读:《迅猛定位低效SQL?》留了一个尾巴: selectid,namewherename='shenjian' selectid,name,sexwherename='shenjian' 多查询了一个属性,为何检索过程完全不同? 什么是回表查询? 什么是索引覆盖? 如何实现索引覆盖? 哪些场景,可以利用索引覆盖来优化SQL? 这
可以看到:
都能够命中索引覆盖,无需回表。 画外音,Extra:Using index。 四、哪些场景可以利用索引覆盖来优化SQL? 场景1:全表count查询优化 原表为:
直接:
不能利用索引覆盖。 添加索引:
就能够利用索引覆盖提效。 场景2:列查询回表优化
这个例子不再赘述,将单列索引(name)升级为联合索引(name, sex),即可避免回表。 场景3:分页查询
将单列索引(name)升级为联合索引(name, sex),也可以避免回表。 InnoDB聚集索引普通索引,回表,索引覆盖,希望这1分钟大家有收获。 提示,如果你不清楚explain结果Extra字段为Using index的含义,请阅读前序文章:《如何利用工具,迅猛定位低效SQL?》 【本文为51CTO专栏作者“58沈剑”原创稿件,转载请联系原作者】 ![]() 戳这里,看该作者更多好文 (编辑:晋中站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |