Ich habe vor kurzem alle meine Where-Bedingungen geändert und verwende jetzt <=>
anstelle von =
weil ich gegen Nullen prüfen muss. Gibt es irgendwelche Leistungsprobleme?
Antworten
Zu viele Anzeigen?Es gibt keine wirkliche Auswirkung auf die Leistung. Hier ist ein Test, um dies selbst zu überprüfen
mysql> SELECT BENCHMARK(1000000, (SELECT SQL_NO_CACHE userId FROM Activity WHERE userId<=>42459204 LIMIT 1));
Vergewissern Sie sich, dass Sie <=> verwenden müssen.
NULL-sicher gleich. Dieser Operator führt einen Gleichheitsvergleich durch wie wie der =-Operator, gibt aber 1 statt statt NULL zurück, wenn beide Operanden NULL sind, und 0 anstelle von NULL, wenn ein Operand NULL ist.
Wenn Sie nur den r-Wert überprüfen wollen, tun Sie Folgendes
col=CONST AND CONST IS NOT NULL
oder t1.col=t2.col
<=>
ist im Grunde eine Abkürzung für die Einbindung von OR (Val1 IS NULL AND Val2 IS NULL)
o IS NOT DISTINCT FROM
Es es ein zusätzlicher Vorgang, aber der Unterschied dürfte vernachlässigbar sein es sei denn, Sie sind SELECT
der zu vergleichenden Daten, da sonst die erste SELECT
zurückkehrend NULL
muss nicht die zweite SELECT
weil der Standard-Gleichheitsoperator =
wird immer false ergeben.
Wie @Dathan anmerkte, sollten Sie sicherstellen, dass dies tatsächlich der Zeitpunkt ist, an dem Sie dies tun wollen.