根据值更新另一个 MySQL 表
您希望使用另一个表中的值轻松更新一个 MySQL 表“tobeupdated” ,“原始”,基于存储在 VARCHAR(32) 字段中的匹配字符串, 'value.'
初始查询和性能问题
最初,您尝试使用以下查询来更新 'tobeupdated':
UPDATE tobeupdated, original SET tobeupdated.id = original.id WHERE tobeupdated.value = original.value
虽然成功了,这个查询被证明很慢并且只处理了所需的一小部分
优化查询
要提高性能,请考虑以下优化查询:
UPDATE tobeupdated INNER JOIN original ON (tobeupdated.value = original.value) SET tobeupdated.id = original.id
了解优化查询
“INNER JOIN”语法允许更高效的数据检索通过显式指定两个表之间的连接条件。此外,对“tobeupdated.value”和“original.value”字段建立索引可显着加快处理速度。
简化查询
对于更简单的解决方案,您可以使用'USING' 子句:
UPDATE tobeupdated INNER JOIN original USING (value) SET tobeupdated.id = original.id
'USING' 简化了等连接通过自动匹配两个表中具有相同名称的列。在这种情况下,“tobeupdated”和“original”都有一个“value”列。
其他注意事项
确保相关列有足够的索引覆盖率以优化性能。如果表特别大,请考虑为合并结果创建第三个表,尽管这不一定会提高速度。
以上是如何根据另一个表中的匹配值高效地更新 MySQL 表?的详细内容。更多信息请关注PHP中文网其他相关文章!