SQL Server 如果存在
Posted
技术标签:
【中文标题】SQL Server 如果存在【英文标题】:SQL Server IF EXISTS 【发布时间】:2010-10-22 05:06:27 【问题描述】:我必须将数据插入到表中,但前提是它不存在。
我使用以下方法检查现有行:
IF EXISTS (SELECT 'X' FROM Table1 where id = @id)
使用'X'
代替使用列名会提高性能吗?
【问题讨论】:
【参考方案1】:没有。您可以使用*
、列名、NULL
甚至1/0
。
根据 ANSI 标准,不应对其进行评估。 Page 191 ANSI SQL 1992 Standard。
*
在MSDN 中被提及
但是,更好的方法是使用 MERGE (SQL Server 2008) 或简单地捕获错误。我以前的 SO 回答:One, Two
【讨论】:
@anishmarokey:查看我的其他答案的链接。唯一键本身没有帮助,但它确实允许 try/catch。它还暗示了一个有助于提高性能的索引【参考方案2】:这可能是微不足道的差异。我认为我见过的最常见的“模式”是在检查是否存在时只选择 1,但我不会太担心。
select 1 from Table1...
【讨论】:
【参考方案3】:一种技术是在列上添加唯一约束。始终插入一条记录并处理该 id 已存在于表中的失败情况。
【讨论】:
以上是关于SQL Server 如果存在的主要内容,如果未能解决你的问题,请参考以下文章
如果存在可在 SQL Server 2005 和 SQL Server Compact 3.5 中使用的索引,则删除该索引的脚本