Create a unique index for the second record, then:
if not exists (select null from ...) insert into ... else select x from ...
You cannot get away from the index, and in fact it is not so much overhead - the SQL server supports indexing columns up to 900 bytes and does not distinguish.
The needs of your model are more important than any perceived performance problems that symbolize the string (this is what you are doing) - this is a general method of reducing the size of the database, and this indirectly (and generally) means better performance.
- change -
To calm timothy:
declare @x int = select x from ... if (@x is not null) return x else ...
source share