Первый сценарий никогда не будет быстрее, чем два других, потому что SELECT, который вы запускаете первым, является ненужной дополнительной работой и также выполняется неявно UPDATE (и, возможно, INSERT).
Даже с распределением 50% / 50% я думаю, что использование UPDATE / INSERT будет немного быстрее, поскольку обработка ошибок (перехват исключения) занимает значительно больше времени, чем UPDATE, которая ничего не обновляет.
Таким образом, я бы использовал шаблон UPDATE / INSERT, если вы не знаете, что на самом деле lot (например,> 70%) строк не будет.
Но об этом может сказать только хороший тест производительности в вашей среде.