Max*_*mus 2 sql sql-server count
我想知道这两个SQL语句中的哪一个在性能和最佳实践中更好,以便找到现有记录?还有另一种有效的方法吗?
IF EXISTS(SELECT 1 FROM TABLE WHERE ID = @ID)
BEGIN
--VALIDATION
END
Run Code Online (Sandbox Code Playgroud)
要么
SET @VARIABLE = SELECT COUNT(1) FROM TABLE WHERE ID = @ID)
IF(@VARIABLE > 0)
BEGIN
--VALIDATION
END
Run Code Online (Sandbox Code Playgroud)
如果你需要知道的是根本就有任何行,那么第一个更好 - EXISTS一旦子查询找到第一个匹配的行,它就会完成.
在COUNT(1)必须找到所有匹配的记录,以便返回准确计数,然后将其几乎忽略不计,如果我们只是想为>0
另外(IMHO),exists语句读得更清楚(尽管第二个语句并不真正需要变量).
更新评论
保存示例存在作为变量的结果,以澄清针对该问题的一些注释:
DECLARE @exists BIT
SET @exists = (CASE
WHEN EXISTS(SELECT 1 FROM TABLE WHERE ID = @ID) THEN 1
ELSE 0
END)
...
IF @exists = 1
BEGIN...
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
104 次 |
| 最近记录: |