我必须在表中插入数据,但前提是它不存在。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