Короткий ответ: вам нужно проверить это на себе. У меня есть ощущение, что выполнение небольшого выбора для проверки существования будет работать лучше, но вам нужно убедиться в этом на уровне громкости и посмотреть, что будет лучше.
В общем, я не люблю оставлять свою проверку ошибок полностью на механизм исключений, что бы я ни делал. Другими словами, если я могу проверить, является ли то, что я делаю, допустимым, а не просто генерировать исключение, это обычно то, что я делаю.
Однако я бы предложил использовать EXISTS
запрос вместо count(*)
if(exists (select 1 from mytable where key = "somekey"))
return false
else
insert the row
Несмотря на это (с абстрактной, нейтральной с точки зрения двигателя) точки зрения, я почти уверен, что в MySQL есть некоторые ключевые слова, которые можно использовать для вставки строки в таблицу, только если первичный ключ не существует. Это может быть вашим лучшим выбором, если вы согласны с использованием ключевых слов для MySQL.
Другой вариант - полностью поместить логику в инструкцию SQL.