今天来学习一下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操作。
浙公网安备 33010602011771号