`=`和`< =>`之间是否存在性能差异?

时间:2011-05-10 20:58:29

标签: mysql performance optimization

我最近更改了所有使用<=>而不是=的条件,因为我需要检查空值。是否有任何性能问题?

2 个答案:

答案 0 :(得分:2)

这里没有真正的性能影响是为自己验证的测试

mysql> SELECT BENCHMARK(1000000, (SELECT SQL_NO_CACHE userId FROM Activity WHERE userId<=>42459204 LIMIT 1));

确保您需要使用&lt; =&gt;

  

NULL-safe相等。这个运营商   执行相等的比较   =运算符,但返回1   如果两个操作数都为NULL,则为NULL,   如果是一个操作数,则为0而不是NULL   是NULL。

如果您只需要检查右值

col = CONST和CONST不为空

或t1.col = t2.col

答案 1 :(得分:1)

<=>基本上是包含OR (Val1 IS NULL AND Val2 IS NULL)IS NOT DISTINCT FROM

的快捷方式

是一项额外的操作,但差异应该可以忽略,除非SELECT要比较的数据,否则第一个{{1} } SELECT返回NULL不需要执行第二个SELECT,因为标准相等运算符=总是会产生错误。

正如@Dathan所指出的那样,确保这确实是你打算这么做的。