Недавно я изменил все мои условия использования <=> вместо =, потому что мне нужно проверить, не null. Есть ли проблемы с производительностью?
Есть ли разница в производительности между `=` и `<=>`?
Ответ 1
Нет никакого реального влияния на производительность здесь - это тест, который нужно проверить для себя
mysql> SELECT BENCHMARK(1000000, (SELECT SQL_NO_CACHE userId FROM Activity WHERE userId<=>42459204 LIMIT 1));
Убедитесь, что вам нужно использовать <= >
NULL-безопасно. Этот оператор выполняет сравнение равенства оператор =, но возвращает 1 скорее чем NULL, если оба операнда NULL, и 0 вместо NULL, если один операнд имеет значение NULL.
Если вам просто нужно проверить rvalue do
col = CONST AND CONST NOT NULL
или t1.col = t2.col
Ответ 2
 <=> - это в основном ярлык для включения OR (Val1 IS NULL AND Val2 IS NULL) или IS NOT DISTINCT FROM
Это дополнительная операция, но разница должна быть незначительной , если вы SELECT сопоставляете данные, потому что иначе первая SELECT возвращающая NULL не должна выполняться второй SELECT, потому что стандартный оператор равенства = всегда будет давать false.
Как отметил @Dathan, убедитесь, что это действительно когда вы намереваетесь сделать.
