use*_*597 17 mysql ifnull null-test
这两个MySQL函数做同样的事情:
IFNULL(column_name, 'test') = 'test'
Run Code Online (Sandbox Code Playgroud)
要么
NULLIF(column_name, 'test') IS NULL
Run Code Online (Sandbox Code Playgroud)
哪一个更有效率?
Boh*_*ian 17
它们彼此之间的效率都很高 - 这些功能的开销大致相同.
但这比以下任何一个都更有效:
(column_name is null
or column_name = 'test')
Run Code Online (Sandbox Code Playgroud)
因为不需要调用该函数.
您可能会发现更常见的测试首先会提高性能.
有了这样的问题,发现相对性能的最简单,最可靠的方法就是尝试它们并比较查询时间.确保您拥有生产规模和实际值的数据集,因此测试是公平的.
Ash*_*gam 17
目的NULLIF和IFNULL不一样,所以性能比较没有任何意义.
NULLIF用于返回null如果表达式具有特定的值,而IFNULL用于返回text,如果表达式为null.
例:
SELECT IFNULL(field,'empty') from table1;
因为null对最终用户没有多大意义.
insert into table1 (field) values (nullif(field,'empty'));
由于null在数据库中有特殊含义.
它们用于不同的目的,性能比较没有任何意义。
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
Run Code Online (Sandbox Code Playgroud)
http://dev.mysql.com/doc/refman/5.7/en/control-flow-functions.html
| 归档时间: |
|
| 查看次数: |
15010 次 |
| 最近记录: |