【发布时间】:2010-10-22 05:06:27
【问题描述】:
我必须将数据插入到表中,但前提是它不存在。
我使用以下方法检查现有行:
IF EXISTS (SELECT 'X' FROM Table1 where id = @id)
使用'X' 代替使用列名会提高性能吗?
【问题讨论】:
标签: sql-server
我必须将数据插入到表中,但前提是它不存在。
我使用以下方法检查现有行:
IF EXISTS (SELECT 'X' FROM Table1 where id = @id)
使用'X' 代替使用列名会提高性能吗?
【问题讨论】:
标签: sql-server
没有。您可以使用*、列名、NULL 甚至1/0。
根据 ANSI 标准,不应对其进行评估。 Page 191 ANSI SQL 1992 Standard。
* 在MSDN 中被提及
但是,更好的方法是使用 MERGE (SQL Server 2008) 或简单地捕获错误。我以前的 SO 回答:One, Two
【讨论】:
这可能是微不足道的差异。我认为我见过的最常见的“模式”是在检查是否存在时只选择 1,但我不会太担心。
select 1 from Table1...
【讨论】:
一种技术是在列上添加唯一约束。始终插入一条记录并处理该 id 已存在于表中的失败情况。
【讨论】: