php - 如何更新数据库中所有表的所有记录?

标签 php mysql database performance

我有一个包含大量记录的表(可能超过 500 000 或 1 000 000 条)。 我想更新整个数据库中所有表中具有相同字段名称的一些常见列。

我知道向各个表编写单独查询的传统方法,但不知道用一个查询来更新所有表的所有记录。

在 SQL 中执行此操作最有效的方法是什么,而不使用某些方言特定的功能,因此它可以在任何地方(Oracle、MSSQL、MySQL、Postgres 等)工作?

其他信息:没有计算字段。有索引。使用生成的 SQL 语句逐行更新表。

最佳答案

(这听起来像是标准化“列”的经典案例。)

无论如何...不。没有单个查询可以在所有表​​中找到该列,然后对每个表执行UPDATE

在 MySQL 中,您可以使用表 information_schema.COLUMNS 来查找包含特定命名列的所有表。通过这样的SELECT,您可以生成(使用CONCAT()等)所需的UPDATE语句。但是,您需要手动运行它们(通过复制和粘贴)。

当然,您可以编写一个存储过程将其包装到单个调用中,但这风险太大。如果其他表具有相同的列名但不应更新怎么办?

至于跨多个供应商的通用代码——算了吧!实际上每种语法都需要进行一定程度的调整。

关于php - 如何更新数据库中所有表的所有记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39122075/

相关文章:

php - 在客户端重用 Zend 验证器

mysql - 操作数应包含 1 列或 sql 语法错误

MySQL ABS 计算优化技巧

python - 如何使用 Django 查询多种数据库类型?

mysql - **[错误]1416 : GEOMETRY field in DB Query

PHP PM系统逻辑

php - 将消息从网络服务器发送到我智能手机上的移动聊天应用程序(如 WhatsApp、Viber 或 Kik)?

php - 直接使用 PDO 类是否更安全?

php - 设置一个 MySQL 表来跟踪用户链接点击

mysql - 合并来自同一来源的两个计数查询