今天来学习一下mysql的性能优化:

优化数据库有一下几种方式:1:硬件,2:系统配置,3,数据库表结构,4:sql以及索引

 

一、sql以及索引:

1.首先,我们如何发现有问题的sql呢?

  答案就是 :开启mysql慢查询日志。

1)查看mysql是否开启慢查询日志
show variables like 'slow_query_log';
2)设置没有索引的记录到慢查询日志
set global log_queries_not_using_indexes=on;
3)查看超过多长时间的sql进行记录到慢查询日志
show variables like 'long_query_time'
4)开启慢查询日志
set global slow_query_log=on

5)查看日志记录位置
show variables like 'slow_query_log_file'
6)查看日志
tail -50 /home/mysql/data/mysql-slow.log

慢查询日志存储格式:

1.1分析工具:

1.2怎样发现有问题的sql

1.3分析sql 查询

explain 关键字

explain + 语句 可以分析语句 

 

 1.4具体事例

1.4.1.  对于max(),最好在对应字段上建立索引。

1.4.2   count(*) 与 count(id)(也就是具体字段)的区别:count(*)查询所有列,count(id) 当id为null时候不查询。

count例子:count(id or null ) 这样就查询了所有列(也查询了id=null 的列)。

1.4.3子查询:子查询尽量优化成join查询,但是要看看有没有一对多的情况,注意有没有重复数据,如果有用distinct关键字去重。

1.4.4 group by 优化 如果group by 字段是子句的,那么应该把group by 放到子句当中,而不是放在最后。

1.4.5 limit  与 order by    : order by 后面最好跟索引或者是主键,这样可以减少io操作。