首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在MySQL中,哪个更有效: IFNULL还是NULLIF?

问在MySQL中,哪个更有效: IFNULL还是NULLIF?
EN

Stack Overflow用户
提问于 2013-04-09 07:52:38
回答 3查看 18.2K关注 0票数 21

这两个MySQL函数做同样的事情:

代码语言:javascript
复制
IFNULL(column_name, 'test') = 'test'

或

代码语言:javascript
复制
NULLIF(column_name, 'test') IS NULL

哪一个更有效率?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-04-09 07:55:48

它们的效率都是一样的--函数的开销几乎是一样的。

但这比这两种方法都更有效:

代码语言:javascript
复制
(column_name is null 
 or column_name = 'test')

因为函数不需要被调用。

您可能会发现,将更常见的测试放在第一位可以提高性能。

对于这样的问题,发现相对性能的最简单、更可靠的方法是尝试它们并比较查询时间。确保您有生产大小和实际价值的数据集,以便测试是公平的。

票数 22
EN

Stack Overflow用户

发布于 2015-07-16 23:00:43

NULLIF和IFNULL的用途不同,因此性能比较没有任何意义。

如果表达式具有特定值,则使用NULLIF返回null;如果表达式为null,则使用IFNULL返回text。

示例:

代码语言:javascript
复制
SELECT IFNULL(field,'empty') from table1;

因为null对终端用户没有多大意义。

代码语言:javascript
复制
insert into table1 (field) values (nullif(field,'empty'));

因为null在数据库中有特殊含义。

票数 22
EN

Stack Overflow用户

发布于 2016-07-07 00:27:21

它们用于不同的目的,性能比较没有任何意义。

代码语言:javascript
复制
select if(a,b,c);    # a ? b : c       # if a!=0 and a is not null then b else c

select ifnull(a,b);  # a ? a : b       # if a is not null then a else b

select nullif(a,b);  # a=b ? null : a  # if a=b then null else a

http://dev.mysql.com/doc/refman/5.7/en/control-flow-functions.html

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15891025

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档