V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
BrilliantGinger
V2EX  ›  问与答

有没的 sql 优化大佬 小弟来跪了...

  •  
  •   BrilliantGinger · 2021-03-17 16:13:35 +08:00 · 2130 次点击
    这是一个创建于 1348 天前的主题,其中的信息可能已经有所发展或是发生改变。

    公司报表要搞 sql 优化,但是有很多函数 函数里面有很多子查询,导致 sql 特别慢,小的学术浅薄,特来救助...嘤嘤嘤

    27 条回复    2021-03-18 14:13:07 +08:00
    BrilliantGinger
        1
    BrilliantGinger  
    OP
       2021-03-17 16:25:18 +08:00
    dsada
    fareware
        2
    fareware  
       2021-03-17 18:59:34 +08:00
    举个例子
    MeteorCat
        3
    MeteorCat  
       2021-03-17 19:03:25 +08:00 via Android
    直接加钱,没什么是加钱解决不了的,有的话那就是钱加的不够
    MeteorCat
        4
    MeteorCat  
       2021-03-17 19:09:55 +08:00 via Android
    @MeteorCat 以前年轻也是和楼主一样烦恼,自从换了公司之后遇到这种问题,都是直接加配置处理,才发现真的加钱世界触手可及
    shakoon
        5
    shakoon  
       2021-03-17 19:13:30 +08:00
    看执行计划,加索引
    fiypig
        6
    fiypig  
       2021-03-17 19:20:06 +08:00 via iPhone
    explain 分析下
    redtea
        7
    redtea  
       2021-03-17 19:33:21 +08:00
    为什么一定要写成一条 SQL 执行,不能取出来在程序里处理后再输出吗?
    levelworm
        8
    levelworm  
       2021-03-17 20:19:19 +08:00 via Android
    大哥你好歹给个例子啊。。。
    proxychains
        9
    proxychains  
       2021-03-17 20:36:46 +08:00 via Android
    这是什么电影.jpg
    BrilliantGinger
        10
    BrilliantGinger  
    OP
       2021-03-17 20:50:50 +08:00
    @MeteorCat 哈哈 你可真有趣 直接加配置... 问题公司用的 mysql 只能靠我们咯
    BrilliantGinger
        11
    BrilliantGinger  
    OP
       2021-03-17 20:51:11 +08:00
    @levelworm 抱歉 老哥 第一次发主题...
    BrilliantGinger
        12
    BrilliantGinger  
    OP
       2021-03-17 20:53:21 +08:00
    @redtea 都是以前别人写好的...主要是用了很多函数 函数里面子查询 你想想假如我一个表有 4000 条数据 子查询表有 100w 条数据 就会对 100w 数据的表进行 4000 次访问 多可怕..我不知道怎么处理了
    BrilliantGinger
        13
    BrilliantGinger  
    OP
       2021-03-17 20:53:39 +08:00
    @shakoon 试过了
    BrilliantGinger
        14
    BrilliantGinger  
    OP
       2021-03-17 20:54:15 +08:00
    @fareware 都是以前别人写好的...主要是用了很多函数 函数里面子查询 你想想假如我一个表有 4000 条数据 子查询表有 100w 条数据 就会对 100w 数据的表进行 4000 次访问 多可怕..我不知道怎么处理了 第一次发帖子 不知道怎么发图片 嘿嘿
    romisanic
        15
    romisanic  
       2021-03-17 22:24:28 +08:00
    data
    sql
    levelworm
        16
    levelworm  
       2021-03-18 01:19:33 +08:00 via Android
    我觉得可能还是得从业务出发重构比较好。他这点代码是做啥的搞清楚应该就好些了。
    xupefei
        17
    xupefei  
       2021-03-18 08:08:34 +08:00 via iPhone
    上 Spark SQL 。
    zhiguang
        18
    zhiguang  
       2021-03-18 10:10:33 +08:00
    用阿里的 mysql,十亿级别的数据都能查.....
    BrilliantGinger
        19
    BrilliantGinger  
    OP
       2021-03-18 10:31:14 +08:00
    @levelworm 搞业务的人都离职了...
    BrilliantGinger
        20
    BrilliantGinger  
    OP
       2021-03-18 10:31:59 +08:00
    @romisanic 0 。0
    BrilliantGinger
        21
    BrilliantGinger  
    OP
       2021-03-18 10:32:21 +08:00
    @xupefei 大数据 ...公司没那实力
    BrilliantGinger
        22
    BrilliantGinger  
    OP
       2021-03-18 10:32:38 +08:00
    @zhiguang 完全不是一种公司...
    jowenz
        23
    jowenz  
       2021-03-18 11:08:28 +08:00
    @BrilliantGinger 你说的这个函数,如果函数里面要去其他表取数,应该类似标量子查询吧,数据量少没问题, 子查询(函数)如何走索引在 100W 里面查也不会很慢的。量多还是改写 SQL 吧。
    BrilliantGinger
        24
    BrilliantGinger  
    OP
       2021-03-18 11:39:04 +08:00
    知道了 老哥,现在公司有个老人,用视图的方式去优化 sql,但是我感觉用视图做优化 并不是真正的优化,而我们现在写的 sql 的复杂度,这 sql 已经无法优化了,牵扯到表太多了
    BrilliantGinger
        25
    BrilliantGinger  
    OP
       2021-03-18 11:39:18 +08:00
    @jowenz 知道了 老哥,现在公司有个老人,用视图的方式去优化 sql,但是我感觉用视图做优化 并不是真正的优化,而我们现在写的 sql 的复杂度,这 sql 已经无法优化了,牵扯到表太多了
    jowenz
        26
    jowenz  
       2021-03-18 12:44:04 +08:00
    @BrilliantGinger 视图没有优化吧,就是封装起来,少写代码,看起来整洁一些,有时候使用视图还会更慢
    BrilliantGinger
        27
    BrilliantGinger  
    OP
       2021-03-18 14:13:07 +08:00
    @jowenz 速度倒是快了不少...
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1053 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 23:14 · PVG 07:14 · LAX 15:14 · JFK 18:14
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.