【发布时间】:2011-06-12 11:36:21
【问题描述】:
如果已知列的结果只有两个候选值,
ifnull(a, b) as a_or_b_1
和
coalesce(a, b) as a_or_b_2
将给出相同的结果。但哪个更快?搜索时我找到了this article,它说 ifnull 更快。但这是我找到的唯一一篇文章。对此有何看法?
提前致谢:)
【问题讨论】:
-
嗯,您确定这是您查询中最慢的部分吗? :-)
如果已知列的结果只有两个候选值,
ifnull(a, b) as a_or_b_1
和
coalesce(a, b) as a_or_b_2
将给出相同的结果。但哪个更快?搜索时我找到了this article,它说 ifnull 更快。但这是我找到的唯一一篇文章。对此有何看法?
提前致谢:)
【问题讨论】:
我的观点是你应该为你的使用做基准。
我怀疑会有很大的不同。 请记住,虽然单一的基准可能表明某个基准稍好一些,但数据随时间的变化可能会改变该结果。
另请注意,COALESCE 自 1992 年以来一直是标准 SQL 的一部分 - 我不确定 IFNULL 是否在任何标准中。
Adam Machanic 有一篇很好的文章,关于对等效场景进行基准测试 - Performance: ISNULL vs. COALESCE (in SQL Server)。请注意获得有效测试的一些附带条件。
【讨论】: