W SQL 2008 możesz po prostu użyć MERGE - znacznie prostszego niż którekolwiek z twoich podejść.
Również nie jestem z tobą na "NIE chcę używać transakcji ze względu na wydajność" - każde wykonywane polecenie DML jest i tak częścią jakiejś transakcji, więc są transakcje, nawet jeśli nie otwierasz ich jawnie. Jeśli masz problemy z wydajnością, możesz opublikować więcej szczegółów, aby uzyskać dodatkową pomoc z wydajnością.
Edycja:Jeśli potrzebujesz naprawdę szybkich wstawek, nie wstawiaj jednego wiersza na raz. Dodaj zestawy wierszy i użyj funkcji MERGE — korzyść, jaką uzyskasz dzięki wstawianiu partii wierszy naraz, powinna znacznie przewyższyć wszelkie drobne ulepszenia, które uzyskasz dzięki optymalizacji szybkości dodawania jednego wiersza.
W każdym razie teoretyczne rozumowanie na temat czegokolwiek związanego z bazami danych zwykle nie jest wystarczająco dobre. Naprawdę musisz przeprowadzić benchmark, aby określić, co jest szybsze. To, co nazywasz „zbędnym zapytaniem o istniejącą linię”, może być całkowicie pomijalne i nie wiesz, czy tak jest, dopóki nie zmierzysz go w realistycznych warunkach.