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

3

最近我将所有的where条件从=改为<=>,因为我需要检查是否为空。这样做是否会影响性能?

2个回答

2
这里没有真正的性能影响,以下是一个测试,供您自行验证。
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


这是我的数据库抽象层。您可以传递一个列值对字典,它应该检查该列是否等于该值。空值是一个有效的值。 - mpen

1

<=> 基本上是一个快捷方式,包括 OR (Val1 IS NULL AND Val2 IS NULL) 或者 IS NOT DISTINCT FROM

它确实是一种额外的操作,但除非你正在 SELECT 要比较的数据,否则差异应该可以忽略不计,因为第一个返回 NULLSELECT 不需要执行第二个 SELECT,因为标准等号运算符 = 总是会产生 false。

正如 @Dathan 所指出的那样,请确保这确实是你想要做的时候。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接