码农知识堂 - 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

  • 相关阅读:
    LeetCode 0593. 有效的正方形
    Linux 系统编程,Binder 学习,文件访问相关的接口
    【你也能从零基础学会网站开发】Web建站之javascript入门篇 JavaScript中的Screen屏幕对象与Navigator浏览器信息对象
    关于找暑期实习后的一些反思
    C语言有关内存的几个疑问,以memset以及memcpy为例
    PHP:声明注解类
    基于C51控制蜂鸣器
    图书馆咖啡厅终于开啦,喝了美式和小麦草准备面试的leetcode之旅:82. 删除排序链表中的重复元素 II
    DOM--预加载和懒加载
    C语言结构体应用-通讯录
  • 原文地址: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号