Я бы собрал тестовую базу данных и скрипт для сравнения вариантов.
Просто догадываясь об этом, я считаю, что сначала сделать INSERT, а повторная попытка с UPDATE - в среднем более быстрый путь. Это потому, что если данных еще нет в базе данных, то вы сохранили другой запрос. Если ваши данные чаще находятся в базе данных, сначала выполните ОБНОВЛЕНИЕ и повторите попытку с INSERT, если это не удалось.
Однако ошибка может привести к прерыванию транзакции и необходимости отката. Если это плохо для вас, то сначала вам нужно будет сделать SELECT.
Я не знаю о MySQL, но я знаю, что там, где я работаю, мы используем хранимую процедуру в наших базах данных PostgreSQL, чтобы сделать это. Хранимая процедура выполняет SELECT, а затем вставку или обновление.