Проверяет ли значение первичного ключа перед вставкой быстрее, чем при использовании try-catch?

В основном у меня есть таблица с столбцом первичного ключа с двумя полями (memberid, messageid), и у меня есть сохраненная процедура, которая вставляет новую строку в эту таблицу.

Прямо сейчас я проверяю, существует ли строка с PK, и вставляю, если нет, но я уже сталкивался с ситуацией, когда строка была вставлена ​​другим процессом сразу после проверки и перед фактической вставкой, поэтому я Я думаю об альтернативном способе.

Я НЕ хочу использовать транзакции по соображениям производительности, поэтому я подумал о том, чтобы включить INSERT в try-catch и вообще пропустить проверку. Если строка уже существует, вставка завершится ошибкой, но она будет отключена "catch", что нормально.

У меня вопрос - выбросить ошибку и отловить ее - дорогостоящая операция?

6
задан Andrey 16 March 2011 в 20:40
поделиться