Я думаю, что любое из ваших предложений в вопросе подходит.
В зависимости от того, как вы используете это, вы можете сэкономить время, выполнив INSERT IGNORE, который позволяет вставлять новую строку, если первичный ключ не существует. Если она существует, ошибка игнорируется, поэтому вы можете продолжить как обычно.
Другие аналогичные параметры в зависимости от вашего использования включают использование вставок типа REPLACE или INSERT ON DUPLICATE KEY UPDATE. Это позволяет обновить существующую запись, если первичный ключ уже существует, в противном случае он просто вставляет новую запись.