【发布时间】:2011-05-10 20:58:29
【问题描述】:
我最近将所有 where 条件更改为使用 <=> 而不是 =,因为我需要检查空值。是否存在任何性能问题?
【问题讨论】:
标签: mysql performance optimization
我最近将所有 where 条件更改为使用 <=> 而不是 =,因为我需要检查空值。是否存在任何性能问题?
【问题讨论】:
标签: mysql performance optimization
这里没有真正的性能影响,这是一个自己验证的测试
mysql> SELECT BENCHMARK(1000000, (SELECT SQL_NO_CACHE userId FROM Activity WHERE userId<=>42459204 LIMIT 1));
确保您需要使用
NULL 安全相等。该运算符 执行相等比较,例如 = 运算符,但返回 1 而不是 如果两个操作数都为 NULL,则为 NULL, 如果有一个操作数,则为 0 而不是 NULL 为 NULL。
如果你只需要检查右值做
col=CONST AND CONST 不为空
或 t1.col=t2.col
【讨论】:
<=> 基本上是包含OR (Val1 IS NULL AND Val2 IS NULL) 或IS NOT DISTINCT FROM 的快捷方式
它是一个额外的操作,但差异应该可以忽略不计除非你是SELECTing要比较的数据,否则第一个SELECT返回@987654326 @ 不需要执行第二个 SELECT,因为标准相等运算符 = 将始终产生 false。
正如@Dathan 所说,请确保这确实是您打算这样做的时候。
【讨论】: