我最近更改了所有使用<=>
而不是=
的条件,因为我需要检查空值。是否有任何性能问题?
答案 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所指出的那样,确保这确实是你打算这么做的。