You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MariaDB慢查询优化求助:4000万行表关联更新查询优化

MariaDB更新语句性能优化方案

针对你提供的更新语句执行缓慢的问题,结合table2数据量达4000万行的情况,给出以下优化方案:

  • 创建复合索引加速子查询
    子查询是性能瓶颈核心,table2的查询依赖uid和opt两个条件,创建复合索引可以让数据库直接通过索引统计行数,无需扫描全表:

    CREATE INDEX idx_uid_opt ON table2(uid, opt);
    

    注:如果已有包含这两个字段的有效索引,可跳过此步骤。

  • 用JOIN改写子查询
    部分场景下,JOIN的执行计划比子查询更高效,改写后的语句如下:

    UPDATE table1 t1
    JOIN (SELECT COUNT(*) AS cnt FROM table2 WHERE uid = 1011 AND opt = 1) t2
    SET t1.ANS = t2.cnt
    WHERE t1.uid = 1011;
    
  • 优化table1的更新定位
    如果table1数据量较大,给uid字段创建索引可以快速定位需要更新的行,避免扫描table1全表:

    CREATE INDEX idx_table1_uid ON table1(uid);
    
  • 更新表统计信息
    若table2长期未维护统计信息,优化器可能生成低效执行计划,执行以下命令更新统计信息:

    ANALYZE TABLE table2;
    

内容的提问来源于stack exchange,提问作者ccsvega

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 09:07:03