如何优化SQL语句,看这篇就够了 !

共 1489字,需浏览 3分钟

 ·

2021-08-30 05:54

点击上方蓝色字体,选择“标星公众号”

优质文章,第一时间送达

1.分析MySQL服务器当前的状态信息

SHOW SESSION STATUS;
SHOW SESSION STATUS LIKE 'Com_%' //当前会话下所有语句类型的执行次数

//可以了解当前应用是以插入更新为主,还是以查询操作为主,以及各种SQL类型的执行比例大概是多少
SHOW SESSION STATUS LIKE 'InnoDB_rows%' 

2.定位执行效率比较低的SQL语句

(1) 慢查询日志

查看当前慢查询日志功能是否开启

SHOW VARIABLES LIKE '%slow_query_log%'

SHOW VARIABLES LIKE '%slow_query_time%' //默认为10秒

测试慢查询日志功能

select SLEEP(11),first_name FROM actor where actor_id = 1; //语句会睡眠11秒

在日志文件中可以看到上面这个慢SQL

这样我们就可以通过慢查询日志去把这些值时间超过我们预期值的语句挑出来

可以在mysql的配置文件中配置慢查询选项,这样既可永久生效。

(2) 查看执行中的任务
SHOW PROCESSLIST

这种方式可以显示当前执行中的SQL语句

select SLEEP(100),first_name FROM actor where actor_id = 1; //睡眠100秒

3.通过Desc或者Explain命令查看计划执行

通过慢查询日志中获取到慢的SQL中,通过语句查看执行计划

两条语句的执行结构是一样的

DESC SELECT * FROM film_actor WHERE film_id = 1;
EXPLAIN SELECT * FROM film_actor WHERE film_id = 1;

KEY含义
type表的扫描类型
possible_keys可能用到的索引
key实际用到的索引
key_leng索引的长度
rows得到结果所需要的查询的行数

最后确定问题并采取相应的优化措施#


  作者 |  antaia11

来源 |  cnblogs.com/antaia11/p/15178153.html


加锋哥微信: java3459  
围观锋哥朋友圈,每天推送Java干货!

浏览 30
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报