我想清理始终使用Management Studio手动运行的SQL查询的结果。但是我的if / then循环比单个元素花费的时间要长得多。
目前,此Select语句立即运行(少于1秒)并且通常为空:
Select * from A join B on A.id=B.id
如果没有结果,我想显示一条消息而不是空的结果集(这是更大的多部分查询的一部分,因此清晰度会有所帮助)。我改成了这个:
If (Select count(*) from A join B on A.id=B.id)>0
begin
Select * from A join B on A.id=B.id
end
else
Select 'No Results'
由于那里的两个Select语句都在附近运行(我检查过),我希望整个代码段在相同的时间内运行。相反,它需要EIGHT秒。为什么这需要更长的时间并且有一个简单的方法呢?
答案 0 :(得分:5)
使用if exists
If exists (Select * from A join B on A.id=B.id)
begin
Select * from A join B on A.id=B.id
end
else
Select 'No Results'
答案 1 :(得分:1)
我建议在查询后检查结果计数。这样做的缺点是在输出中为您提供了第二个结果集,但它具有两次不查询数据的优点。
Select * from A join B on A.id=B.id
IF @@ROWCOUNT = 0 Select 'No Results'