我有两个表,它们被称为MASTER和NEWDATA。两个表上的模式完全相同,它们包含字段名称:CODE,SERIAL,MODEL,VALIDATED_DATE。
我想检查NEWDATA表和MASTER表中CODE字段中的值是否存在。如果它们在两个表中,那么我想在MASTER表中将VALIDATED_DATE更新为now()。
我有很多记录,所以我很好奇最快的方法是什么?
谢谢!
答案 0 :(得分:1)
UPDATE MASTER M
Set VALIDATED_DATE = Now()
WHERE EXISTS (SELECT NULL
FROM NEWDATA AS ND
WHERE ND.CODE = M.CODE)
答案 1 :(得分:1)
update master m inner join newdata n on n.code=m.code set m.validated_date = now()
应对code
列编制索引,以使其有效运行。鉴于它应该快,比其他人建议的子查询方法快得多(除非你运行mysql 5.4,mysql的相关子查询执行基本上完全没有优化)。
答案 2 :(得分:0)
如果您将VALIDATED_DATE
设置为将自身重置为current time on update,那么任何列的简单更新(给定CODE
上的索引)应该非常快。