如果知道列的结果只有两个候选值,
ifnull(a, b) as a_or_b_1
和
coalesce(a, b) as a_or_b_2
会给出相同的结果。但哪个更快?在搜索时我发现this article,其中 ifnull 更快。但这是我找到的唯一一篇文章。对此有何看法?
提前感谢:)
答案 0 :(得分:13)
我的观点是你应该根据你的用法进行基准测试。
我怀疑会有太大的不同。 请记住,虽然单个基准测试可能表明一个稍微好一点,但随着时间的推移,数据的变化可能会改变这一结果。
另请注意,COALESCE自1992年以来一直是标准SQL的一部分 - 我不确定IFNULL是否符合任何标准。
Adam Machanic撰写了一篇关于对等效场景进行基准测试的好文章 - Performance: ISNULL vs. COALESCE (in SQL Server)。请注意获得有效测试的一些附带条件。