Есть ли разница в производительности между `=` и `<=>`?

Недавно я изменил все мои условия использования <=> вместо =, потому что мне нужно проверить, не 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, убедитесь, что это действительно когда вы намереваетесь сделать.