根据上面的索引结构说明,主键索引和普通索引的查询区别
如果语句是 select * from T whereid=500,即主键查询方式,则只需要搜索 id 这棵 B+ 树;
如果语句是 select * from T where k=5,即普通索引查询方式,则需要先搜索 k 索引树,得到 id 的值为 500,再到 id 索引树搜索一次。这个过程称为回表。
覆盖索引
如果执行的语句是 select id from T where k between 3 and 5,这时只需要查 id 的值,而 id 的值已经在 k 索引树上了,因此可以直接提供查询结果,不需要回表。也就是说,在这个查询里面,索引 k 已经“覆盖了”我们的查询需求,我们称为覆盖索引。
索引下推
索引下推是MySQL5.6版本推出的优化手段
默认是开启的,可以通过下面命令关闭
SET optimizer_switch ='index_condition_pushdown=off';
索引为 index(name,age)
mysql>select*from tuser where name like'张%'and age=10and ismale=1;
无索引下推每次都需要回表查询,而下推的是在先过滤好结果集,再从结果集的数据
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?