我必須在表中插入數據,但前提是它不存在。SQL Server IF EXISTS
我檢查現有行使用:
IF EXISTS (SELECT 'X' FROM Table1 where id = @id)
將使用'X'
提高性能,而不是使用列名?
我必須在表中插入數據,但前提是它不存在。SQL Server IF EXISTS
我檢查現有行使用:
IF EXISTS (SELECT 'X' FROM Table1 where id = @id)
將使用'X'
提高性能,而不是使用列名?
這可能是微不足道的區別。我認爲我見過的最常見的「模式」是當你只是檢查存在時選擇1,但我不會擔心它太多。
select 1 from Table1...
號您可以使用*
,列名,NULL
甚至1/0
。
根據ANSI標準,不應評估。 Page 191 ANSI SQL 1992 Standard。
*
在MSDN
提到然而,更好的辦法是使用MERGE(SQL Server 2008中),或者簡單地捕獲錯誤。前面的SO回答我:One,Two
一種技術是在列上添加一個唯一約束。始終插入一條記錄並處理該表中已存在該標識的故障情況。
該列的唯一鍵值是什麼? – anishMarokey 2010-10-22 05:55:00
@anishmarokey:查看我的其他答案的鏈接。一個獨特的關鍵本身並沒有幫助,但它確實允許try/catch。它也意味着一個指數,這將有助於表現 – gbn 2010-10-22 06:59:06