相关疑难解决方法(0)

是否对SQL WHERE子句进行了短路评估?

例如:

SELECT * 
FROM Table t 
WHERE @key IS NULL OR (@key IS NOT NULL AND @key = t.Key) 
Run Code Online (Sandbox Code Playgroud)

如果@key IS NULL的计算结果为true,那么@key IS是否为NULL并且@key = t.Key是否已计算?

如果不是,为什么不呢?

如果是,是否有保证?它是ANSI SQL的一部分还是特定于数据库?

如果是数据库特定的,SqlServer?甲骨文?MySQL的?

参考:短路评估

sql short-circuiting

135
推荐指数
6
解决办法
5万
查看次数

SQL Server条件流

如果我在这些select查询之间有一个子句SELECTIF EXISTS条件下编写两个语句,AND即使第一个SELECT返回false ,两个查询都会被执行吗?

IF EXISTS (SELECT....) AND EXISTS(SELECT ....)
BEGIN

END
Run Code Online (Sandbox Code Playgroud)

在这种情况下,SQL Server引擎是否同时执行SQL语句?

谢谢Krish

sql t-sql sql-server if-statement short-circuiting

13
推荐指数
3
解决办法
4232
查看次数

SQL Server - 查询短路?

SQL Server中的T-SQL查询是否支持短路?

例如,我有一种情况,我有两个数据库,我正在比较两个表之间的数据,以匹配和复制一些信息.在一个表中,"ID"字段将始终具有前导零(例如"000000001234"),而在另一个表中,ID字段可以具有或不具有前导零(可以是"000000001234"或"1234").

所以我的匹配两者的查询是这样的:select*from table1 where table1.ID LIKE'%1234'

为了加快速度,我想在之前添加一个OR,它只是说:table1.ID = table2.ID来处理这两个ID都有填充零并且相等的情况.

这样做会通过匹配"="上的项目来加速查询,而不是为每一行评估LIKE(它会短路并跳过LIKE)吗?

sql sql-server

4
推荐指数
2
解决办法
3030
查看次数

标签 统计

sql ×3

short-circuiting ×2

sql-server ×2

if-statement ×1

t-sql ×1