MySQL数据库优化

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

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

+ 查看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的情况。

+ 合理创建索引

+ 用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

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

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

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

原文地址:https://www.cnblogs.com/xxoome/p/8342676.html