记录日常工作中优化sql的一些注意事项
1、left join 会比 inner join 慢 (left join 要让小表做主表,在关联条件上添加索引),inner join 中自动的
2、注意 表结构的编码方式会让 left 等不走索引
3、对于大表来说BETWEEN and、 >、<等运算符来说可能不走索引 (会导致CBO优化器计算走索引花费大于走全表) 不妨加个 limit 0,100 然后就走索引了。
4、FORCE INDEX (time) 强制走索引(对于between 这种来说 也起不了很好的效果,但是效果也是有的)
5、FORCE INDEX (time) 也不能随便使用 ,可能导致其他索引失效 (有可能)
6、注意表、字段的编码保持一致
7、一般情况下,INNER JOIN 比 LEFT JOIN 返回更少的数据,因此查询效率应该更高。但是如果关联的表中有GROUP BY那么就要注意了,因为我们用()括住的sql不一定会做为一个整体去执行的,所以有时在返回的数据一样的情况下,LEFT JOIN 比 INNER JOIN 执行的是更快的,而具体什么情况下会这样,就需要我们参考两者的执行计划进行对比了,
8、明确一点就是主键索引是比普通索引要快的
9、记录一下遇到的问题(有个sql 里面既有inner join 又有left join)传统思想是少关联一个表就会快很多,但是在我left join 大表之后发现反而变更快了,explain 了一下 不加最后left join 表的时候扫描出的行数(估算的行数) 反而会比 加了个LEFT join 的行数多,这很奇怪。(在这里有where 条件 条件上有与关联字段的联合索引),于是把where 中关联的索引字段查询条件删除后变跟不加LEFT JOIN explain的行数一样了。这时候发现问题, 很有可能explain 走的时候会先走where的普通索引进行查找(这时候的数据基数并不少)再与其他的一关联,就很有可能影响的行数超级多,反而比LEFT join关联大表的少。
(explain 的解析字段参考 https://www.cnblogs.com/tufujie/p/9413852.html)
10、索引并不是多加就好,因为我们加多了索引可能有的就会走普通索引,这样效率就会差很多
11、order by 的字段也要加上索引
12、有时候where 里面单个字段不走索引,还有其他的where 条件的话 试一下联合索引不行的话就加上FORCE INDEX
13、对于大的sql 关联很多表的 需要一步一步删除来判断在哪里慢,先删除排序、查询字段的子查询、再逐步删除一些没有关系的表 left join 表 一步一步判断哪里慢

关于mysql 优化的日常记录相关推荐

  1. 单表60亿记录等大数据场景的MySQL优化和运维之道 | 高可用架构

    015-08-09 杨尚刚 高可用架构 此文是根据杨尚刚在[QCON高可用架构群]中,针对MySQL在单表海量记录等场景下,业界广泛关注的MySQL问题的经验分享整理而成,转发请注明出处. 杨尚刚,美 ...

  2. [转]单表60亿记录等大数据场景的MySQL优化和运维之道

    本文作者: 杨尚刚 ,美图公司数据库高级DBA,负责美图后端数据存储平台建设和架构设计.前新浪高级数据库工程师,负责新浪微博核心数据库架构改造优化,以及数据库相关的服务器存储选型设计. 前言 MySQ ...

  3. 数据库性能优化—MySQL单表最大记录数超过多少时性能会严重下降

    以前没有想过MySQL数据库的单表最大行数,直到最近interview时被问到c语言中int类型的最大值是多少时才想到Mysql单表最大行数的问题. 一开始被问到C语言中int类型的最大值有点懵逼,一 ...

  4. mysql查询到最新记录就停止_使用Limit参数优化MySQL查询 在找到一个记录后将停止查询...

    优化 MySQL 查询的 Limit 参数 我们在做一些查询的时候总希望能避免数据库引擎做全表扫描,因为全表扫描时间长,而且其中大部分扫描对客户端而言是没有意义的.那么在 MySQL 中有那些方式是可 ...

  5. 关于mysql优化_MYSQL---关于MYSQL优化

    1. 慢查询,规定查询超过2秒的为慢查询(救火) 1)mysql> show full processlist; 2)用explain查看查询语句是否经过索引,如果没有就要建立索引 long_q ...

  6. mysql 优化方法有哪些?

    MySQL索引 MySQL支持诸多存储引擎,而各种存储引擎对索引的支持也各不相同,因此MySQL数据库支持多种索引类型,如BTree索引,哈希索引,全文索引等等.为了避免混乱,本文将只关注于BTree ...

  7. 关于mysql优化_关于MySQL优化的几点总结

    前言 现如今,数据库的操作越来越成为整个应用的性能瓶颈了,这点对于Web应用尤其明显.所以,我整理了MySQL优化的几点建议,希望这些优化技巧对您有用,总结不到的,欢迎大家补充. SQL执行慢的原因 ...

  8. mysql not in优化_98%的人不知道的MySQL优化器原理

    ​| 作者 梁东阳,数据库研发中心数据库内核工程师,负责腾讯云MySQL的内核开发. 在日常运维中,相信不少人都收藏了很多关于查询优化的方法论和小技巧,但是仔细想想,你真的了解这些优化背后的原理吗? ...

  9. 史上最全的MySQL优化手册

    MySQL数据库优化大全 (注:文档参考高性能MySQL,SQL手册,官方文档 [提前声明] 文章由作者:张耀峰 结合自己生产中的使用经验整理,最终形成简单易懂的文章 写作不易,转载请注明,谢谢! 大 ...

最新文章

  1. 美团是怎么玩儿AI的?今晚8点揭秘美团超大规模知识图谱--美团大脑
  2. element ui input 无法输入的解决办法
  3. 史上最完整的Maven 教程
  4. 产品经理也能动手实践的AI(二)- 做个识别宠物的AI
  5. [置顶] 我的程序员之路(4)---C语言课程设计
  6. PurdueUCLA提出梯度Boosting网络,效果远好于XGBoost模型!
  7. rsync同步服务配置手记
  8. bootstrap22-内联的复选框和单选按钮的实例
  9. EXCEL VBA编程基础
  10. 51单片机实现流水灯
  11. 金山打字通计算机英语,金山打字通英文版
  12. 【软件测试】测试人,我们35岁焦虑怎样破?
  13. 11b、11a/g、11n和11ac速率
  14. 日订单量达到100万单后,我们做了订单中心重构
  15. r语言中将茎叶图旋转90度_R语言(02)绘图
  16. 2010水瓶座年运势
  17. AD学习笔记(一)基础认识
  18. 白鹭引擎王泽:重度H5游戏性能优化技巧
  19. ESP01 连接OneNet平台
  20. 鸿蒙王者荣耀想要转区吗,王者荣耀账号怎么转区 角色迁移转区教程

热门文章

  1. mfc打开控制台异常关闭_vc控制台程序关闭事件时的正确处理方式
  2. 【小白学习keras教程】九、keras 使用GPU和Callbacks模型保存
  3. 期末复习、化学反应工程科目(第四章)
  4. 北京/杭州 | 阿里巴巴达摩院自然语言智能生物医学团队招聘研究型实习生
  5. 10万元奖金“智源工业检测赛”激战正酣!高分Baseline合辑带你入门智能制造
  6. 报名 | AlphaGo Zero是如何实现无师自通的?
  7. POJ1185 炮兵阵地 状压DP
  8. java 限制日期格式_Java日期格式
  9. springboot开发的项目上传图片到服务器后不能访问
  10. Java根据文件头文件信息判断文件类型