在 SQL 中检查 NULL 或 0 值的速度更快
我想要最快的方法来检查表中是否已有值。
例如哪个更快:
IF ((SELECT ID FROM [SomeTable].[dbo].[BlockedSubscriberNumbers]
WHERE VALUE = @myVal) is null )
BEGIN
....
END
ELSE
BEGIN
....
END
或
IF ((SELECT COUNT(ID) FROM [SomeTable].[dbo].[BlockedSubscriberNumbers]
WHERE VALUE = @myVal) > 0 )
BEGIN
....
END
ELSE
BEGIN
....
END
在 T-SQL 中也确实在频繁累积的情况下发挥作用。我的意思是,在大多数情况下,它会更快地进入 IF block ,而如果它主要进入 ELSE,则速度会更慢。
最佳答案
好吧,它们实际上会做不同的事情,您无法在 SQL 中检查 NULL
是否大于 0。
你应该做的是这个。
IF (ISNULL((SELECT ID FROM [SomeTable].[dbo].[BlockedSubscriberNumbers]
WHERE VALUE = @myVal), 0) > 0 )
BEGIN
....
END
ELSE
BEGIN
....
END
你的意思是等于 0 吗?因为你的问题是
What is faster in SQL to check value for NULL or 0
这部分是关于 Joe 关于多个结果集的评论
您可以使用 ISNULL 对 Select ID 执行某种聚合函数,以确定是否有任何值大于 0(当然假设您的所有值都大于 0)。
关于根据 OP 评论确定是否有任何行包含该信息
IF(从 [SomeTable].[dbo].[BlockedSubscriberNumbers] 中选择计数(ID),其中值 = @myVal)= 0
应该告诉你是否有包含该值的行
最终编辑
只需使用Exists
如果存在(从 [SomeTable].[dbo].BlockedSubscriberNumbers] 中选择 ID,其中 Values = @myVal)
关于sql - 检查 NULL 或 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3988249/