Reputation: 341
I have to insert data into table but only if it does not already exist.
I check for existing rows using:
IF EXISTS (SELECT 'X' FROM Table1 where id = @id)
Will the use of 'X'
improve performance instead of using a column name?
Upvotes: 4
Views: 3162
Reputation: 432230
No. You can use *
,column name, NULL
or even 1/0
.
As per the ANSI standard, it should not be evaluated. Page 191 ANSI SQL 1992 Standard.
*
is mentioned in MSDN
However, a better way is to use MERGE (SQL Server 2008) or simply catch the error. Previous SO answers from me: One, Two
Upvotes: 8
Reputation: 188
One technique would be to add a unique constraint on the column. Always insert a record and handle the failure case where that id already existed in the table.
Upvotes: 0
Reputation: 88355
It's probably negligible difference. I think the most common "pattern" I've seen is to just select 1 when you're just checking for existence, but I wouldn't worry about it too much.
select 1 from Table1...
Upvotes: 0