В SQL 2008 вы можете просто использовать MERGE - намного проще, чем любой из ваших подходов.
Кроме того, я не согласен с вами по поводу «Я НЕ хочу использовать транзакции по соображениям производительности» - каждая выполняемая вами команда DML в любом случае является частью какой-либо транзакции, поэтому существуют транзакции, даже если вы не открываете их явно. Если у вас возникли проблемы с производительностью, вы можете опубликовать более подробную информацию, чтобы получить дополнительную помощь по производительности.
Редактировать: если вам нужны действительно быстрые вставки, не вставляйте по одной строке за раз. Добавьте наборы строк и используйте MERGE - преимущество, которое вы получите от одновременной вставки пакетов строк, значительно превысит любые незначительные улучшения, которые вы получите от оптимизации скорости добавления одной строки.
Во всяком случае, теоретические рассуждения обо всем, что связано с базами данных, обычно недостаточно хороши. Вам действительно нужно тестировать, чтобы определить, что быстрее. То, что вы называете «ненужным запросом существующей строки», может быть совершенно незначительным, и вы не будете знать, так ли это, пока не измерили его в реальных условиях.