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

MySQL - AND条件

假设我有这样的查询:

SELECT bla WHERE foo LIKE '%bar%' AND boo = 'bar' AND whatvr IN ('foo', 'bar')...
Run Code Online (Sandbox Code Playgroud)

我想知道MySQL在检索结果时是否继续检查所有条件.例如.如果foo不是LIKE %bar%,它会继续检查是否boo = 'bar',等等?

如果我把最不可能的条件放在最后,那会更快吗?

我很抱歉,如果这似乎是一个愚蠢的问题,我谈到SQL时我是一个完整的菜鸟:)

mysql

7
推荐指数
1
解决办法
9299
查看次数

标签 统计

mysql ×1

short-circuiting ×1

sql ×1