mysql 调优-利用索引覆盖和下推
回表
只查询一次索引得不到想要的数据,典型的场景就是非聚簇索引查询:先拿到主键ID,再根据id查询一次得到数据(再次查询这就是回表)
索引覆盖:根据普通索引查询不回表就能得到数据
-- 联合索引(age, addr)
select age, addr from t_user where age > 10;
-- 单列索引(不一定非要联合索引,因为每个二级都有id,只要不回表就行)
select id, age from t_user where age > 10;
索引下推:索引覆盖是不回表,索引下推是减少回表次数
-- 常规思路:先查询 age > 10,根据聚簇索引的结果集,再过滤 age < 60 的
-- 真实执行:先查询 age > 10,后面条件也是 age,不先找聚簇索引了,再把 a < 60 的也过滤了,再找聚簇索引
select * from t_user where age > 10 and age < 60;
-- 联合索引(age,name)
-- 思路一样,先过滤 a > 10,因为是联合索引,先把 name like 了再找聚簇索引
select * from t_user where age > 10 and name like '张%';
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具