当前位置:网站首页>MySQL优化:从十几秒优化到三百毫秒
MySQL优化:从十几秒优化到三百毫秒
2022-06-30 06:49:00 【梦梦~~】
今天这篇文章还是记录问题的解决过程的。昨天测试测试代码的时候,发现一个功能需要大概十几秒的时间才能执行完。我就去看自己的代码逻辑,完整看了代码之后,凭感觉导致时间长的原因有两部分:一个是mysql的书写问题,另一个可能是循环查询数据库的问题。代码梦梦就不上传了,可能会涉及到公司的隐私问题
下面是粘出来的sql部分,可以看到这个sql都7秒多了,第二张图片是使用explain执行器之后的结果,可以看到五张表只有两张表走了索引,其他的表没有走索引,可以看到type这一列的级别也是ALL。
结果值从好到坏依次是:system > const > eq_ref > ref > fulltext > ref_or_null > index_merge > unique_subquery > index_subquery > range > index > ALL。一般来说,得保证查询至少达到range级别,最好能达到ref,否则就可能会出现性能问题。所以这个sql要优化了。

优化方式:
1,先结合type+key这两列来优化,也就是通过增加索引来优化。一般我会给在where 和order by 子句中用到字段添加索引。所以我就在 d 表上添加了四个索引(deviceId、name、del_flag、project_id),c 表给prdfession也添加了索引。
2,之后再根据Extra这一列进行优化,可以看到上图这两列出现了“Using temporary”、“Using filesort”这两种情况。
“Using temporary”:指的是sql中如果order by或者group by中的字段都来自于其它表而非连接顺序中的第一个表,就会创建一个临时表了。解决方案:可以尝试创建联合索引试试。
“Using filesort”:指的是order by 查询的字段数据量超出了mysql的默认值,导致了order by中的字段不走索引,使用了文件查询,也是导致性能瓶颈的原因。解决方案:可以尝试把排序功能放到代码中实现,sql中不做排序。
当创建了普通索引、联合索引(project_id + name)之后,再看一下sql的执行速度。


可以看到执行速度立马就提了上去,explain命令执行的时候,也会发现type一列全达到了ref级别,extra一列去没有了“Using temporary”、“Using filesort”这两个影响性能的标志。
现在sql的优化就完成了,如果速度还慢的话,就考虑优化代码逻辑的部分辽。
边栏推荐
- tomorrow! "Mobile cloud Cup" competition air publicity will start!
- NFS mount
- 1.2(补充)
- [Hot100]10. 正则表达式匹配
- Judge whether H5 is in wechat environment or enterprise wechat environment at both ends
- Definition and use of ROS topic messages
- Redis cache
- Graphic octet, really top
- Analysis of startup process of gazebo multi computer simulation
- Problems and solutions of creating topic messages in ROS
猜你喜欢

Gazebo model modification

Performance comparison of random network, scale-free network, small world network and NS small world matlab simulation

银河麒麟初体验

【我的OpenGL学习进阶之旅】关于OpenGL的着色器的向量和矩阵分类的访问方式: xyzw/rgba/stpq以及数组下标

SOC_SD_CLK

程序猿入门攻略(十一)——结构体

Bat usage details 2

Relevant database questions.

Gazebo installation, uninstall and upgrade

1.8 - multi level storage
随机推荐
Suggestion: use tools:overrideLibrary
Hao looking for a job
Control method of UAV formation
Several C language implementations
1.5 - logical operation
程序猿入门攻略(十一)——结构体
1.2 (supplementary)
HuaWei满级大牛首次分享出这份598页网络协议全彩手册
RT thread migration to s5p4418 (I): scheduler
RT thread application
Basic questions (I)
NFS mount
SOC project AHB_ SD_ Host controller design
关注这场直播,了解能源行业双碳目标实现路径
我开户后把账号忘记了咋办?股票在网上开户安全吗?
RT thread Kernel Implementation (I): threads and scheduling
安装setup对应的组件
原来你是这样的数组,终于学会了
ROS program compilation, like no compilation, refers to the execution of the old compiled executable program
1.8 - 多级存储