3 Stimmen

Gibt es einen Leistungsunterschied zwischen `=` und `<=>`?

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?

2voto

Dathan Punkte 64

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

1voto

Matthew Punkte 10056

<=> 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.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X