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

有一个对数据库疑惑的问题,场景如下

  •  
  •   deng884720982 · 4 小时 5 分钟前 · 514 次点击

    有一个项目,大概跑了两年数据量比较大,偶尔会出现系统效率响应变慢的情况。 由于现场不能停工,第一反应是不是历史数据太大了,使用存储过程,分批把历史数据删除剩下几百万。 发现两个模块都慢,最终分析代码发现两个模块都调用了一个方法。方法执行的 sql 如下:

    image-20241218083030694

    怀疑可能是 UNION 走了全表导致的,然后加了如下索引

     CREATE INDEX IX_STATUS_WCSSOURCE ON TTT(STATUS, WCSSOURCE);
    

    系统就正常了。

    但是没搞懂的是,为什么清除历史数据了还是慢,而且期间运行了几年也没有卡顿。 备注:使用的是删除,主键此时还是比较大的数值

    4 条回复    2024-12-18 09:41:34 +08:00
    bg7lgb
        1
    bg7lgb  
       3 小时 38 分钟前
    最简单的处理方法 ,explain plan ,看下 SQL 的执行计划。

    这个组合索引并不优,不如分开建索引。
    spiffing
        2
    spiffing  
       3 小时 29 分钟前
    换成临时表都比 union 快
    fffq
        3
    fffq  
       3 小时 25 分钟前
    表要做碎片整理吧
    irisdev
        4
    irisdev  
       2 小时 55 分钟前
    这个表名起的
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3547 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 20ms · UTC 04:36 · PVG 12:36 · LAX 20:36 · JFK 23:36
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.