【发布时间】:2019-07-11 16:06:39
【问题描述】:
我正在运行一个很长的查询,如下所述。 它为自动化系统上的每个帐户获取下一个所需的操作。
即
SELECT Account.id,
(IFNULL(**Should send message query**,
IFNULL(**Should check inbox**, NULL))) as nextTask FROM Account
实际上 IFNULL 的字符串大约有 10 个,每个都是相当复杂的子查询。
我想知道如果第一个满足,MySQL 是否会计算下面的 IFNULL 表达式的值。也就是说,如果一个帐户应该发送一条消息,它不应该费心计算 应该检查收件箱
的子查询这就是 MySQL 的工作原理吗?
这个和CASE WHEN's有什么区别
例如
CASE WHEN **Should send message** THEN **Should send message**
WHEN **Should check inbox** THEN **Should check inbox**
END
我只想降低此查询的 CPU 使用率。
【问题讨论】:
-
首先:使用
COALESCE()。 -
@PaulSpiegel,怎么样?这种情况有什么不同?
-
“有什么区别”? - 它更短。它符合 SQL 标准。
标签: mysql sql performance subquery