【问题标题】:Differences between "IS NULL" and "ISNULL()" in MysqlMysql中“IS NULL”和“ISNULL()”的区别
【发布时间】:2010-08-20 10:44:26
【问题描述】:

运算符IS NULL和函数ISNULL()在性能上有什么区别吗?

【问题讨论】:

标签: mysql performance null


【解决方案1】:

This thread 类似,但不完全在 MySQL 上。根据那里显示的测试:

IS NULL 更高效,因为它不需要扫描。

Seek 通常比扫描快,因为它只包括符合条件的记录,而扫描包括每一行。更详细的解释here

另一个区别(虽然不是性能)是它们的否定语法:

IS NOT NULL  /* using NOT operator */
! ISNULL()  /* using exclamation mark */

【讨论】:

  • 感谢您做出简明扼要的总结!
  • 新手警告;如果列被索引,这只会更有效:)
  • @Ja͢ck,如果它没有被索引,你会使用哪个?
  • 您所指的线程是关于 MSSQL 的,其中 isnull 与 MySQL isnull 不同,但与 MySQL ifnull 相同。因此,总体上的答案是不正确且具有误导性的。
  • NOT ISNULL() 也是有效声明
【解决方案2】:

查看 MySQL 手册,它们似乎真的是同义词。

即使不是,我也倾向于相信查询优化器会选择最佳解决方案。

【讨论】:

  • 我也读过,但是 ISNULL 文档说 SHARES 一些特殊行为与 IS NULL,这让我很害怕。
  • @Wiliam 好点。也许做一个试运行确实是最好的方法!
  • 嗯?在我的理解中,“共享特殊行为”只是意味着他们很奇怪,但他们在同样的方式中很奇怪。
  • @Wiliam, isnull() 似乎是一个函数,而is null 肯定是一个“语言特性”。
猜你喜欢
  • 2017-05-22
  • 2011-03-04
  • 2011-11-17
  • 1970-01-01
  • 1970-01-01
  • 2011-02-14
  • 2017-12-04
  • 2011-04-16
相关资源
最近更新 更多