相关疑难解决方法(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万
查看次数

在JOIN子句中MySQL逻辑评估是懒惰/短路吗?

采用以下表达式: FALSE AND (expression)

MySQL会评估表达式,还是只要看到它就继续前进FALSE

一些背景上下文 - 我想通过以下方式加快查询:

JOIN... ON (indexed_column1=indexed_column2 AND non_indexed_column_a=non_indexed_column_b)

有关我为什么要执行此查询的背景,请参阅此答案

如果它总是要评估non_indexed_column_a=non_indexed_column_b那么就没有时间了.

mysql logic boolean-logic lazy-evaluation

8
推荐指数
1
解决办法
1407
查看次数