Mysql中查询优化
注意:
1、保证被驱动表的join字段已经被索引
2、left join 时,选择小表作为驱动表,大表作为被驱动表。
3、inner join 时,mysql会自己帮你把小结果集的表选为驱动表。
4、子查询尽量不要放在被驱动表,有可能使用不到索引。
5、能够直接多表关联的尽量直接关联,不用子查询。
子查询优化
尽量不要使用not in 或者 not exists
用left outer join on xxxis null 替代
排序分组优化
case
createindex idx_age_deptid_name on emp (age,deptid,name)
以下 是否能使用到索引,能否去掉using filesort
#无过滤不索引
#顺序错,必排序
#方向反必排序
ORDER BY子句,尽量使用Index方式排序,避免使用FileSort方式排序
索引的选择
eg:
#查询年龄为30岁的,且员工编号小于101000的用户,按用户名称排序
sELECT SQL_NO_CACHE * FROM emp WHERE age=30 AND empno <101000 ORDER BY NAME ;
执行案例前先清除emp上的索引,只留主键
索引的选择
group by 使用索引的原则几乎跟orderby一致 ,唯一区别是groupby 即使没有过滤条件用到索引,也可以直接使用索引。
本文来自博客园,作者:diligently,转载请注明原文链接:https://www.cnblogs.com/luo12828-foxmail/p/16964113.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)