If IGNORE is provided, all errors encountered during the update are ignored.
If an update on a row would result in a violation of a primary key or unique index, the update on that row is not performed.
Even worse, the CASE method was 41.1x slower than the INSERT method w/ 30,000 records (6.1x slower than TRANSACTION). INSERT and CASE methods broke even at ~1,000 records.
Even at 100 records, the CASE method is BARELY faster.
So in general, I feel the INSERT method is both best and easiest to use.