2010-10-22 101 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

一种技术是在列上添加一个唯一约束。始终插入一条记录并处理该表中已存在该标识的故障情况。