Вы определенно должны установить уникальный ключ в своей таблице MySQL, независимо от того, что вы решите.
Что касается другой части вашего вопроса, определенно используйте вставку игнорировать при обновлении дублированного ключа, если это то, что выпредназначаются для вашего приложения.
Т.е., если вы собираетесь загружать кучу данных, и вам все равно, какими были старые данные, вы просто хотите новые данные, это путь.
С другой стороны, если есть какая-то ветвь принятия решения, основанная на том, является ли изменение обновлением или новым значением, я думаю, вам придется воспользоваться вариантом 2.
Т.е. если изменения в таблице записаны в другой таблице (например, table: change_log со столбцами: id, table, column, old_val, new_val), то вы не можете просто использовать INSERT IGNORE, потому что вы никогда не сможете сказать, какие значениябыли изменены по сравнению с недавно вставленными.