[原则一:选择需要优化的SQL]

1,选择需要优化的SQL:不是所有的SQL都需要优化,在优化的过程中,首选更需要优化的SQL;
怎么选择?优先选择优化高并发低消耗的SQL;
1,1小时请求1W次,1次10个IO;
2,1小时请求10次,1次1W个IO;
考虑:
①,从单位时间产生的IO总数来说,相同的;
②,针对一个SQL,如果我能把10个IO变成7个IO,一小时减少3W个IO;
针对第二个SQL,如果能把1W个IO变成7K个IO,一小时减少3W个IO;
③,从优化难度上讲,1W->7K难的多;
④,从整体性能上来说,第一个SQL的优化能够极大的提升系统整体的性能;第二个SQL慢一点,无非也就是10个连接查询慢一点; 2,定位性能瓶颈;
1,SQL运行较慢有两个影响原因,IO和CPU,明确性能瓶颈所在;
2,明确优化目标;

[原则二:从Explain和Profile入手]

1,任何SQL的优化,都从Explain语句开始;Explain语句能够得到数据库执行该SQL选择的执行计划;
2,首先明确需要的执行计划,再使用Explain检查;
3,使用profile明确SQL的问题和优化的结果;

[原则三:永远用小结果集驱动大的结果集]

 注意不是:小表连接大的快,而是结果集 

[原则四:在索引中完成排序]

[原则五:使用最小Columns]

1,减少网络传输数据量;
2,特别是需要使用column排序的时候.为什么?MYSQL排序原理,是把所有的column数据全部取出,在排序缓存区排序,再返回结果;
如果column数据量大,排序区容量不够的时候,就会使用先column排序,再取数据,再返回的多次请求方式;

[原则六:使用最有效的过滤条件]

1,过多的WHERE条件不一定能够提高访问性能;
2,一定要让where条件使用自己预期的执行计划;

[原则七:避免复杂的JOIN和子查询]

1,复杂的JOIN和子查询,需要锁定过多的资源,MYSQL在大量并发情况下处理锁定性能下降较快;
2, 不要过多依赖SQL的功能,把复杂的SQL拆分为简单的SQL;
3,MySQL子查询性能较低,应尽量避免使用;

最新文章

  1. 帆软报表FineReport中数据连接之Websphere配置JNDI连接
  2. dedecms二级导航标签调用使用的方法
  3. python Django教程 之 安装、基本命令、视图与网站
  4. linux进程间通信-消息队列
  5. X/Y型文案
  6. android之多媒体篇(二)
  7. Careercup - Facebook面试题 - 5890898499993600
  8. 如何在Ubuntu上安装最新版本的Node.js
  9. Sublime Text 3初体验之Package Control
  10. 【Java基础】成员变量和局部变量的区别
  11. SQL分页语句总结
  12. IIS总提示输入用户名和密码
  13. kali linux 忘记root密码重置办法
  14. 洛谷P3203 [HNOI2010]弹飞绵羊(LCT,Splay)
  15. JEECG中出现Java.sql.SQLException: Value 'xxxx' can not be represented as java.sql.Timestamp的解决办法
  16. 【mybatis深度历险系列】延迟加载
  17. .net core使用orm操作mysql数据库
  18. js实现一个长页面中的图片懒加载即滚动到其位置才加载
  19. blob canvas img dataUrl的互相转换和用处
  20. mySql中SUBSTRING_INDEX函数用法

热门文章

  1. dmp文件导入抽取方法
  2. oracle释放空间到OS
  3. oracle新增ID主键列,如何补全旧数据的ID值
  4. 【老孟Flutter】如何提高Flutter应用程序的性能
  5. [Usaco2008 Mar]牛跑步
  6. 1.2V升5V电源芯片,1.2V升3V的IC电路图方案
  7. 【Python】中国有哪些同名的省市县?
  8. apscheduler(定时任务) 基于redis持久化配置操作
  9. 用动图讲解分布式 Raft
  10. ADB命令连接逍遥模拟器