mysql - 优化 MySQL 大量行更新

标签 mysql

假设我有一个包含 A、B、C、D、E 和 F 列的表。A、B 和 C 是该表中的主键。

我抓取一组行,例如:

SELECT A, B, C, D FROM table WHERE C > 10;

现在我想更新该结果集中每一行的每个 E(并且我使用 D 的值来执行此操作)。最好的方法是什么?

  • 只需对每个条目运行 UPDATE table SET E=value WHERE ..... 查询即可?
  • 执行一个 REPLACE INTO table VALUES ... 查询(但是,如果存在一行,这会执行删除操作,因此我还需要在之前的 SELECT 中读取 F)
  • ??

我可能有相当数量的行(几十万​​行)。一次分“ block ”执行此操作是否更好? (并不是说我很快就会用完 RAM/交换空间)

最佳答案

如果集合中的所有 E 都会获得相同的值,那就很简单:

更新表 SET 'E' = "value"WHERE 'C' > 10;

如果不是,并且 E 由于外部逻辑而获得不同的值,则您需要继续迭代集合并逐行更新。

这可以优化。尝试在结果集上打开可更新游标并直接从那里发出更新或基于准备好的语句生成批处理。

关于mysql - 优化 MySQL 大量行更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29966171/

相关文章:

asp.net - 显示存储在 mysql 数据库中的图像 + ASP.NET MVC

PHP/MySQL 多票

mysql - 在mysql中连接用户定义的变量

mysql - 访问速度,perl 二进制哈希文件与 mySQL

php - 我如何在sqlquery中使用@符号

MySQL ENUM 类型与连接表

php - Bootstrap 表使用连续数据从 MySQL 轮询更新

mysql - 多个自增字段

mysql查询插入不存在的地方

mysql - 我怎样才能高效、清晰地编写下面的查询?