mysql的优化大的有两方面:
1、配置优化
配置的优化其实包含两个方面的:操作系统内核的优化和mysql配置文件的优化
1)系统内核的优化对专用的mysql服务器; 2)mysql配置的优化,一般来说包含:IO处理的常用参数、最大连接数设置、缓存使用参数的设置、慢日志的参数的设置、innodb相关参数的设置等
2、sql语句的优化
1.尽量稍作计算
Mysql的作用是用来存取数据的,不是做计算的,做计算的话可以用其他方法去实现,mysql做计算是很耗资源的。
2.尽量少join
?
3.尽量少排序
排序操作会消耗较多的CPU资源。对于MySQL来说,减少排序有多种办法,比如:
通过利用索引来排序进行优化
减少参与排序的记录条数
非必要不对数据进行排序
4.尽量避免select*
在数据量少并且访问量不大的情况下,select*没有什么影响,但是量级达到一定级别的时候,在执行效率和IO资源的使用上,还是有很大关系的,用什
么字段取什么字段,减少不必要的资源浪费。
5.尽量用join代替子查询
?
6.尽量少 or
使用union all或者是union(必要的时候)的方式来代替or会得到更好的效果。
7.尽量用union all代替union
union和union all的主要差异是前者需要将两个(或者多个)结果集合并后再进行唯一性过滤操作,这就会涉及到排序,增加大量的CPU运算,加大资源
消耗及延迟。所以当我们可以确认不可能出现重复结果集或者不在乎重复结果集的时候,尽量使用union all而不是union。
8.尽量早过滤
最常见于索引的优化设计中,将过滤性更好的字段放得更靠前。
在SQL编写中同样可以使用这一原则来优化一些Join的SQL。比如我们在多个表进行分页数据查询的时候,我们最好是能够在一个表上先过滤好数据
分好页,然后再用分好页的结果集与另外的表Join,这样可以尽可能多的减少不必要的IO操作,大大节省IO操作所消耗的时间。
9.优先优化高并发的SQL,而不是执行频率低某些“大”SQL
对于破坏性来说,高并发的SQL总是会比低频率的来得大,因为高并发的SQL一旦出现问题,甚至不会给我们任何喘息的机会就会将系统压跨。而对
于一些虽然需要消耗大量IO而且响应很慢的SQL,由于频率低,即使遇到,最多就是让整个系统响应慢一点,但至少可能撑一会儿,让我们有缓冲的机会。
10.从全局出发优化,而不是片面调整
SQL优化不能是单独针对某一个进行,而应充分考虑系统中所有的SQL,尤其是在通过调整索引优化SQL的执行计划的时候,千万不能顾此失
彼,因小失大。
11.尽可能对每一条运行在数据库中的SQL进行explain