仅当 3 个值中的任何一个不同时,我才尝试更新 mysql 中的一行中的 3 个列值。
说我有一张桌子
x,y,z,id 列
我目前,
方法A
update foo set x = 'x_value', y = 'y_value', z = 'z_value' where id = 'unique_id'
and ((x <> 'x_value') or (y <> 'y_value') or (z <> 'z_value'))
我对mysql的理论基准测试/架构了解不多,我想知道这些陈述是否
方法B
update foo set x ='x_value' where id = 'unique_id' and ((x <> 'x_value'));
update foo set y ='y_value' where id = 'unique_id' and ((y <> 'y_value'));
update foo set z ='z_value' where id = 'unique_id' and ((z <> 'z_value'));
更好或更优越。
我意识到如果只有一列发生了变化,方法 B 只会执行一次写入和 3 次读取,而方法 A 会执行 3 次写入和 3 次读取。我只是不知道它是否更耗时,因为方法 B 需要查找索引行 3 次。
提前致谢!