川石教育
全国咨询热线:136-9172-9932
  1. 首页 > 资讯与干货 > IT资讯

数据库使用什么方法得以优化运行速度

作者:川石学院 日期:2022-07-27 17:42:44 点击数:

  一天一个关于测试知识点,5分钟内讲解你最关心的软件测试问题,今天就接着来谈谈关于软件测试中的“数据库优化运行速度”。

MySQL:数据库安装,基本配置及客户端工具使用(图1)

  当你在测试测试代码的时候,有时候遇到一个问题,你会发现一个功能需要大概十几秒的时间才能执行完。查看了代码逻辑,也许你都还不知道是什么样的原因导致的,今天这篇文章就是来讲讲数据库使用什么方法得以优化的,现在就开始教你操作。

  Mysql运行导致时间长的原因有两部分:一个是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要优化了。

数据库使用什么方法得以优化运行速度(图2)

数据库使用什么方法得以优化运行速度(图3)

  优化方式:

  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的执行速度。、

数据库使用什么方法得以优化运行速度(图4)

数据库使用什么方法得以优化运行速度(图5)

数据库使用什么方法得以优化运行速度(图6)

  可以看到执行速度立马就提了上去,explain命令执行的时候,也会发现type一列全达到了ref级别,extra一列去没有了“Using temporary”、“Using filesort”这两个影响性能的标志。

  现在sql的优化就完成了,如果速度还慢的话,就考虑优化代码逻辑的部分了。


相关文章
  • 亚马逊运营成功转行软件测试,薪资13K表示很满意!2022-07-27 17:42:44
  • 西安川石的兰朋友喊你来当他的学弟学妹啦!2022-07-27 17:42:44
  • 国外的月亮也不一定比国内测试猿的年薪美~2022-07-27 17:42:44
  • 建筑工程专业朱同学成功转行为软件测试人!2022-07-27 17:42:44
  • 财务管理专业转行软件测试月薪甩会计几条街!2022-07-27 17:42:44
  • 只有技术沉淀才能成功上岸,深圳就业薪资13K!2022-07-27 17:42:44
  • 薪资11K!实现自我价值,从掌握一门IT技术开始...2022-07-27 17:42:44
  • 文科生转行软件测试照样拿下高薪15K!2022-07-27 17:42:44
  • 恭喜罗同学喜提19.5K,成功入行软件测试!2022-07-27 17:42:44
  • 毕业1年,迷茫的他最终选择转行软件测试2022-07-27 17:42:44