mysql UPDATE statement - overhead for same values?
i have a large MYSQL database with hundreds of thousands of records. i want to update a field in a large number of them, but I am unaware if that field has been updated yet or not.
if i call an update statement that sets authortype=10 and authortype is already 10 will this be faster than doing a separate query to only select those that aren't authortype=10 and then update them?
in other words, if I set a value equal to what it is already, is that 开发者_如何学Cany faster than if I am updating a value to something new? again this is with tons and tons of records and I want to be efficient.
thanks in advance
No, MySQL is smart and won't be slower. Don't go through the trouble of checking for that, MySQL will do it for you.
If you set a column to the value it currently has, MySQL notices this and does not update it. No write action is performed. (Source)
BUT,
MySQL can use the WHERE-clause on the column-to-update to determine which index to use (and thus which rows to examine), in which case it might speed up your UPDATE-operation. If your column is indexed, do include it.
Why not just use
UPDATE dbo.Authors
SET AuthorType = 10
WHERE AuthorType <> 10
and have the best of both worlds.
Note that a few hundred thousands records should pose no problem for any modern database engine.
Minor edit
If your table contains hundreds of thousands of rows, it isn't worth worrying about how long it will take. The time taken to decide will be much larger than the time to just do it.
Had you hundreds of millions of rows, it might be a different story.
精彩评论