What's the most efficient way to batch UPDATE queries in MySQL?
Since you're using InnoDB tables, the most obvious optimization would be to group multiple UPDATEs into a transaction.

With InnoDB, being a transactional engine, you pay not just for the UPDATE itself, but also for all the transactional overhead: managing the transaction buffer, transaction log, flushing the log to disk.

If you are logically comfortable with the idea, try and group 100-1000 UPDATEs at a time, each time wrapped like this:

START TRANSACTION;
UPDATE ...
UPDATE ...
UPDATE ...
UPDATE ...
COMMIT;


Possible downsides:


One error will collapse the entire transaction (but would be easily fixed in code)
You might wait for a long time to accumulate your 1000 UPDATEs, so you might also want to have some timeout
More complexity on your application code.