码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Mysql 8.0.30 的查询包含自定义函数的表时,比8.0.27 慢了好几倍


    如题,这是我们今天发现的问题。两台一模一样的机器,OS和其他软件相同,运行同样的查询,A机40秒,B机180 秒。(估计值)非常奇怪,差别就剩下,A机安装的是 8.0.27 而B机装的是8.0.30. 为了检查是否是30 的问题,本人在虚拟机上将27 升级到30, 发现果然速度大幅下降,甚至出现了连接超时的错误。这样看来,30 版本有某种缺陷,但是具体是什么不得而知。为了将问题说清楚,将环境简单介绍一下。

    查询的业务数据库的记录数不到五万条,同时还要查询一个单位表,单位表里面记录了层级关系。因此为了查询方便,写了一个自定义函数,用以层级的查询。SQL语句,简化如下:

     SELECT 
           ...
            JSON_UNQUOTE(JSON_EXTRACT(F_PARENT_DEPT(`tp0`.`dept_id`),
                            '$[0].dep')) AS `dept_name1`,
            JSON_UNQUOTE(JSON_EXTRACT(F_PARENT_DEPT(`tp0`.`dept_id`),
                            '$[1].dep')) AS `dept_name2`,
            JSON_UNQUOTE(JSON_EXTRACT(F_PARENT_DEPT(`tp0`.`dept_id`),
                            '$[2].dep')) AS `dept_name3`,
            JSON_UNQUOTE(JSON_EXTRACT(F_PARENT_DEPT(`tp0`.`dept_id`),
                            '$[3].dep')) AS `dept_name4`,
            JSON_UNQUOTE(JSON_EXTRACT(F_PARENT_DEPT(`tp0`.`dept_id`),
                            '$[4].dep')) AS `dept_name5...
           
        FROM
            ((`IOT_FRONT_V1`.`sys_dept_railway` `tp0`
            JOIN `v_rcvdat_detail` `t2`)     )
        WHERE t2.dept_id=tp0.dept_id
          .....
    

    可以看出,速度慢的原因,是和两个表的笛卡尔积有关的, 如果该值很大,函数就会运行次数很多,从而影响速度。每个函数里面还有比较繁琐的查询操作,目的是查询到一个树形结果。但是问题是,抛弃代码质量的影响,为什么30 比27 慢了那么多呢?
    不知道有没有碰到类似问题的朋友,如果有,请留言交流一下。

    另外,本人更改了查询过程,建立了临时表,查询中不再使用内嵌的函数,速度已经提高了疫苗以内。

    是记备忘。
    maraSun BJFWDQ

  • 相关阅读:
    测试面试回顾(1)
    【Azure 应用服务】PHP应用部署在App Service for Linux环境中,上传文件大于1MB时,遇见了413 Request Entity Too Large 错误的解决方法
    BiliBili 阴阳师主题 前端技术展示
    java计算机毕业设计国外摇滚乐队交流和周边售卖系统MyBatis+系统+LW文档+源码+调试部署
    11位顶级专家共同预测2023年量子领域发展趋势
    MyBioSource CACNA1H 封闭肽相关研究
    JS获取音频的总时长,解决audio.duration 为 NaN || Infinity 问题
    【2024系统架构设计】 系统架构设计师第二版-未来信息综合技术
    vscode因为大文件而无限崩溃的问题,窗口意外终止(原因:“oom“,代码:“-536870904“
    氨基苯酚/多巴胺仿生修饰碳纳米管/α-氧化铝/ CNTs-Ag纳米复合材料
  • 原文地址:https://blog.csdn.net/Uman/article/details/126942749
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号