我使用MySQL作为数据库。我需要更新一些数据。但是数据可能没有改变,所以在这种情况下我可能不需要更新行。
我想知道哪一个会更好(表现明智):
a)搜索表格以确定数据是否已更改。例如,我可以按主键搜索,然后查看剩余字段的值是否已更改。如果是,则继续更新语句,如果没有,则保留。
b)直接使用UPDATE查询。如果数据没有变化,MySQL将自动忽略它并且不处理更新数据。
在这种情况下哪一个会表现得更好。
答案 0 :(得分:3)
答案 1 :(得分:0)
第一种选择对我来说似乎更好,但在特定的场景中。
与在每行上执行更新查询相比,无论您是否需要这样做,对我来说这似乎是比较高效的解决方案。
答案 2 :(得分:0)
如果你使用select-then-update方法,你需要锁定行(例如select for update),否则你处于竞争状态 - 你选择并检查它之后就可以更改行了改变了。
正如@AndreKR所指出的,如果值相同,MySQL将不执行任何写操作,因此直接使用update
比使用2个查询更快。