mysql 批量修改优化方案

一、场景批量修改多条数据

1、循环里修改

php 复制代码
     public function test1foreach1()
    {
        $startTime = time();
        $table = M("table");
        $data =  $table->select();
        foreach ($data as $k => $v) {
            $table->where("id = {$v['id']}")->save(['type' => $v['type'] + 1,'league'=>{$v['league'].$k}]);
        }
        $endTime = time();
        echo  $endTime - $startTime;
        die;
    }

2、拼接case when

php 复制代码
public function test1()
    {
        $startTime = time();
        $leagueValues = [];
        $typeValues = [];
        $ids = [];
        $table = M("table");
        $data =  $table->select();
        $updateSql = "UPDATE table SET league = CASE id";
        foreach ($data as $row) {
            $league = $row['league'] . $row['type'];
            $league = str_replace("'", "\'", $league);
            $type = $row['type'] - 1;
            $values1[] = "WHEN {$row['id']} THEN '{$league}'";
            $values2[] = "WHEN {$row['id']} THEN '{$type}'";
            $ids[] = $row['id'];
        }
        $ids = implode(',', $ids);
        $values1 = implode(' ', $values1);
        $values2 = implode(' ', $values2);
        $updateSql .= " {$values1} END , type = CASE id {$values2} END WHERE id IN ({$ids})";

        $result = M("table")->execute($updateSql);
        $endTime = time();
        echo  $endTime - $startTime;
        die;
    }

一万条数据第一种方式需要执行900多秒。第二种只需要3秒左右。

相关推荐
计算机毕设指导64 小时前
基于Django的本地健康宝微信小程序系统【源码文末联系】
java·后端·python·mysql·微信小程序·小程序·django
l1t4 小时前
DeepSeek对利用DuckDB求解Advent of Code 2021第9题“烟雾盆地”第二部分SQL的分析
数据库·人工智能·sql·递归·duckdb·deepseek·cte
gjc5924 小时前
MySQL无主键大表删除导致主从同步延迟的深度分析
数据库·mysql
汪不止4 小时前
【 分布式唯一业务单号生成方案:Redis + 数据库双保险架构】
数据库·redis·分布式
典孝赢麻崩乐急4 小时前
Redis复习-------Redis事务
数据库·redis·缓存
Gofarlic_OMS4 小时前
通过MathWorks API实现许可证管理自动化
大数据·数据库·人工智能·adobe·金融·自动化·区块链
橘子真甜~4 小时前
Reids命令原理与应用3 - Redis 主线程,辅助线程与存储原理
网络·数据库·redis·缓存·线程·数据类型·存储结构
杨了个杨89825 小时前
Rsyslog + MySQL 实现日志集中存储
数据库·mysql
程序猿20235 小时前
SQL-性能优化
数据库·sql·性能优化
Token_w5 小时前
Llama 3-8B-Instruct 在昇腾 NPU 上的 SGLang 性能实测
mysql·llama·sglang