如果在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