【发布时间】:2010-08-20 10:44:26
【问题描述】:
运算符IS NULL和函数ISNULL()在性能上有什么区别吗?
【问题讨论】:
标签: mysql performance null
运算符IS NULL和函数ISNULL()在性能上有什么区别吗?
【问题讨论】:
标签: mysql performance null
This thread 类似,但不完全在 MySQL 上。根据那里显示的测试:
IS NULL 更高效,因为它不需要扫描。
Seek 通常比扫描快,因为它只包括符合条件的记录,而扫描包括每一行。更详细的解释here。
另一个区别(虽然不是性能)是它们的否定语法:
IS NOT NULL /* using NOT operator */
! ISNULL() /* using exclamation mark */
【讨论】:
isnull 与 MySQL isnull 不同,但与 MySQL ifnull 相同。因此,总体上的答案是不正确且具有误导性的。
NOT ISNULL() 也是有效声明
查看 MySQL 手册,它们似乎真的是同义词。
即使不是,我也倾向于相信查询优化器会选择最佳解决方案。
【讨论】:
isnull() 似乎是一个函数,而is null 肯定是一个“语言特性”。