SQL性能优化的思考

实际开发过程中,SQL性能的优化是最常见的需要思考的问题。

那么实际我们再开发过程中应该如何考虑?或者别人问你时,大概怎么回答帮助别人?总结下,大概有如下几点:

SQL 优化的原则

1,优先优化高并发低消耗的SQL;

    1,1小时请求1W次,1次10个IO;
    2,1小时请求10次,1次1W个IO;
从IO消耗,优化难度,CPU消耗进行比较;

2,定位性能瓶颈;

采用一些数据库比较常用的工具进行定位,有针对性解决问题

    1,SQL运行较慢有两个影响原因,IO和CPU,明确性能瓶颈所在;
    2,明确优化目标;

例如MSQL常用:

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

3、永远采用小结果驱动大结果;

注意:不是小表驱动大表,是小结果集驱动大结果集;

4、在索引中完成排序;

5、使用最小Columns;

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

6、使用最有效的过滤条件

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

7、避免复杂的JOIN和子查询

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章