MySQL数据库优化

不一样版本mysql的优化器有必定的差异
+ 查看数据库版本
select @@version;mysql

+ 查看正在使用的database
select database();sql

+ 查看mysql是否开启慢查询日志
show variables like 'slow_query_log';数据库

+ 开启mysql慢查询日志
set global slow_query_log=on; 工具

+ 设置存储Mysql慢查询日志所在的文件位置
set global slow_query_log_file='/home/mysql/sql_log/mysql-slow.log';优化

+ 设置没有索引的记录到慢查询日志
set global log_queries_not_using_indexes = on;指针

+ 设置SQL查询记录到慢查询日志文件的限定时间,单位秒,一般是0.01s
set long_query_time=1日志

+ 慢查询日志分析工具
pt-query-digest排序

pt-query-digest /var/lib/mysql/bogon-slow.log | more索引

+ 查看sql执行计划
explain select * from store;
Using filesort:须要优化。MYSQL须要进行额外的步骤来发现如何对返回的行排序。它根据链接类型以及存储排序键值和匹配条件的所有行的行指针来排序所有行。
Using temporary:须要优化。MYSQL须要建立一个临时表来存储结果,这一般发生在对不一样的列集进行ORDER BY而不是GROUP BY的状况。io

+ 合理建立索引

+ 用join代替子查询

+ group by语句优化
查询每个演员参演影片的数量
select actor.first_name,actor.last_name,count(*)
from film_actor left join actor on film_actor.actor_id = actor.actor_id
group by film_actor.actor_id;

 


有问题欢迎留言交流。

技术交流群:282575808

--------------------------------------

声明: 原创文章,未经容许,禁止转载!

--------------------------------------

相关文章
相关标签/搜索