Mysql
 sql >> Datenbank >  >> RDS >> Mysql

MySQL-Leistung – IN-Klausel im Vergleich zu Equals (=) für einen einzelnen Wert

Die meisten anderen Antworten liefern nichts schlüssiges, nur Spekulationen. Basierend auf dem guten Rat von @Namphibians Antwort , habe ich ein EXPLAIN ausgeführt bei einigen Abfragen, die denen im OP ähneln.

Die Ergebnisse sind unten:

EXPLAIN für eine Abfrage mit = 1 :

EXPLAIN für eine Abfrage mit IN(1) :

EXPLAIN für eine Abfrage mit IN(1,2,3) :

Wie Sie sehen können, optimiert MySQL IN(1) gleich sein wie = 1 in dieser Art von Abfrage. Antwort von @mes scheint darauf hinzudeuten, dass dies jedoch bei komplexeren Abfragen nicht immer der Fall ist.

Also für diejenigen, die zu faul waren, EXPLAIN auszuführen selbst, jetzt wissen Sie es. Und ja, vielleicht möchten Sie EXPLAIN ausführen auf Ihre eigene Anfrage, um sicherzustellen, dass dies so gehandhabt wird. :-)