最近我将所有的where条件从=
改为<=>
,因为我需要检查是否为空。这样做是否会影响性能?
最近我将所有的where条件从=
改为<=>
,因为我需要检查是否为空。这样做是否会影响性能?
mysql> SELECT BENCHMARK(1000000, (SELECT SQL_NO_CACHE userId FROM Activity WHERE userId<=>42459204 LIMIT 1));
请确保您需要使用 <=> 运算符
NULL安全的等于运算符。该运算符执行类似于=运算符的相等比较,但是如果两个操作数都为NULL,则返回1而不是NULL,如果一个操作数为NULL,则返回0而不是NULL。
如果您只需要检查rvalue,请执行以下操作
col=CONST AND CONST IS NOT NULL
或 t1.col=t2.col
<=>
基本上是一个快捷方式,包括 OR (Val1 IS NULL AND Val2 IS NULL)
或者 IS NOT DISTINCT FROM
它确实是一种额外的操作,但除非你正在 SELECT
要比较的数据,否则差异应该可以忽略不计,因为第一个返回 NULL
的 SELECT
不需要执行第二个 SELECT
,因为标准等号运算符 =
总是会产生 false。
正如 @Dathan 所指出的那样,请确保这确实是你想要做的时候。