如果在T-SQL中存在

如果我们在一个IF EXISTS有一个SELECT语句,那么一旦它在表中find一条logging,执行就会停止吗? 例如:

 IF EXISTS(SELECT * FROM table1 WHERE Name='John' ) return 1 else return 0 

如果表中存在一行的名称为= John,那么它会停止执行并返回1,还是遍历整个表寻找更多匹配?

是的,它停止执行,所以这总是首选的COUNT > 0往往不会。

如果你看一下执行计划,你会发现从table1出来的实际行数不会超过1,而不pipe匹配logging的数量。

有关EXISTS和COUNT的一些讨论,请参阅这篇文章

如果将EXISTS() AND EXISTS()查询结合使用EXISTS() AND EXISTS() 则不能依赖短路 。 即如果第一个查询是错误的,因此整个expression式是错误的第二个查询仍然执行。

在这种情况下,不需要“其他”

 IF EXISTS(SELECT * FROM table1 WHERE Name='John' ) return 1 return 0