2010-10-22 105 views
4

我必須在表中插入數據,但前提是它不存在。SQL Server IF EXISTS

我檢查現有行使用:

IF EXISTS (SELECT 'X' FROM Table1 where id = @id) 

將使用'X'提高性能,而不是使用列名?

回答

0

這可能是微不足道的區別。我認爲我見過的最常見的「模式」是當你只是檢查存在時選擇1,但我不會擔心它太多。

select 1 from Table1... 
8

號您可以使用*,列名,NULL甚至1/0

根據ANSI標準,不應評估。 Page 191 ANSI SQL 1992 Standard

*MSDN

提到然而,更好的辦法是使用MERGE(SQL Server 2008中),或者簡單地捕獲錯誤。前面的SO回答我:OneTwo

+0

該列的唯一鍵值是什麼? – anishMarokey 2010-10-22 05:55:00

+0

@anishmarokey:查看我的其他答案的鏈接。一個獨特的關鍵本身並沒有幫助,但它確實允許try/catch。它也意味着一個指數,這將有助於表現 – gbn 2010-10-22 06:59:06

0

一種技術是在列上添加一個唯一約束。始終插入一條記錄並處理該表中已存在該標識的故障情況。