mysql慢sql优化总结
explain之后(个人见解 仅供参考 欢迎批评指正)
1. 确认当前sql中的索引使用 是否正常 如果不正常 尝试给适当的字段增加索引(但是建立索引的时候 我们需要考虑索引的性能 一般建议一张表 索引字段的占比 控制在30%以下 如果索引过多 会导致我们更新、删除的操作变慢)
2. 查询的字段 应该遵循 要什么查什么 不用的字段 尽量不要查出来
3. 结合业务 把当前sql中的left join替换为join (原因:join要求两张表都要有数据 left join只要左表有数据即可 使用join会使关联的数据变少 直接提高查询效率)
4. 确认一下当前sql中是否有子查询 如果有子查询 尝试把子查询并入到sql中 如果不能并入 则尝试把sql分开查询
5. 在实际业务中 我们往往会遇到查询出的数据有大字段的可能,而且业务往往也会对满足初级条件的数据 做二次筛选 建议在初次查询的时候 只把小字段给查出来 然后对满足二次筛选条件 且确定需要返回的大字段 根据主键id再查一次 防止因为返回数据过多 导致慢sql出现的现象
6. 我们在写sql的时候 顺序往往是 select * from test where id > 1 group by age have score > 18 order by id desc limit 10
此sql在mysql中的实际执行顺序是 from > join > where > group by > having > select > (查出数据到内存中 这也解释了为什么在使用group by之后 order by 为什么会失效的原因) > order by > limit 从上面的执行顺序中 我们可以得出 在我们关联表的时候 尽量把on条件带上 否则sql在执行的过程中 会全表关联 然后才经过where的筛选 虽然我们在返回结果中 看不到二者的区别 但是在实际执行的过程中 会隐形的提高sql查询的笛卡尔积
原文地址:https://www.cnblogs.com/lovecatcher/p/15134408.html
- 地理坐标系与投影坐标系的区别
- ExtJs学习笔记(6)_可分页的GridPanel
- PowerDesinger联系的定义及使用
- Gis链接
- TortoiseSVN文件夹及文件图标不显示解决方法 TortoiseSVN文件夹及文件图标不显示解决方法
- 地图坐标
- PowerDesigner15连接Oracle失败的解决办法
- 地图校正方法心得
- 工作流参考模型点评
- 按图索骥:SQL中数据倾斜问题的处理思路与方法
- [方法“Boolean Contains(System.Guid)”不支持转换为 SQL]的解决办法
- DataBind的一些试验
- 继承HibernateDaoSupport时遇到的问题 使用注解为HibernateDaoSupport注入sessionFa
- 常用代码
- MySQL 教程
- MySQL 安装
- MySQL 管理与配置
- MySQL PHP 语法
- MySQL 连接
- MySQL 创建数据库
- MySQL 删除数据库
- MySQL 选择数据库
- MySQL 数据类型
- MySQL 创建数据表
- MySQL 删除数据表
- MySQL 插入数据
- MySQL 查询数据
- MySQL where 子句
- MySQL UPDATE 查询
- MySQL DELETE 语句
- MySQL LIKE 子句
- mysql order by
- Mysql Join的使用
- MySQL NULL 值处理
- MySQL 正则表达式
- MySQL 事务
- MySQL ALTER命令
- MySQL 索引
- MySQL 临时表
- MySQL 复制表
- 查看MySQL 元数据
- MySQL 序列 AUTO_INCREMENT
- MySQL 处理重复数据
- MySQL 及 SQL 注入
- MySQL 导出数据
- MySQL 导入数据
- MYSQL 函数大全
- MySQL Group By 实例讲解
- MySQL Max()函数实例讲解
- mysql count函数实例
- MYSQL UNION和UNION ALL实例
- MySQL IN 用法
- MySQL between and 实例讲解
- 你分得清MySQL普通索引和唯一索引了吗?
- 基于Dubbo的CRUD案例
- 在javaEE中,实现用户登陆功能的实现
- JavaEE中,实现登录时进行校验验证码的功能
- JavaEE中为删除数据操作与退出操作添加确认提示框
- JavaWeb中的实现页面跳转的同卵双胞胎兄弟——重定向与请求转发
- JavaWeb中的异卵双胞胎——监听器与过滤器
- JavaEE中的el 表达式以及JSTL详解
- 基于Jsp和Servlet的简单项目
- 基于Servlet实现的简单登陆练习
- JavaScript初识
- 聊聊dubbo-go的DubboInvoker
- 如何在云开发Cloudbase中使用MySQL数据库
- Kubernetes笔记之基本概念
- 腾讯云语音识别之一句话识别