Wenn Sie die Werte in einer Tabelle haben und die Spalte indiziert ist , würde ich erwarten, dass sie effizienter ist als die Verwendung einer Werteliste. Beachten Sie, dass es dafür mehrere Möglichkeiten gibt - insbesondere, weil diese Art von Abfragen ( WHERE c IN (SELECT c FROM x)
) in einigen, nicht so alten MySQL-Versionen nicht vollständig optimiert ist:
SELECT a FROM b WHERE c IN ( SELECT c FROM x ) ;
Sie können (wenn x (c)
keine NULL
Werte vorhanden sind) wie folgt umschreiben :
SELECT a FROM b WHERE EXISTS ( SELECT 1 FROM x WHERE x.c = b.c ) ;
oder (wenn x (c)
eindeutige Werte vorliegen) als:
SELECT b.a FROM b JOIN x ON x.c = b.c ;
Jetzt müssen Sie 4 Versionen testen. Das tatsächliche Verhalten hängt natürlich von mehreren weiteren Faktoren ab (neben Abfrage, Indizierung, Versionen) wie Tabellengrößen, Werteverteilungen, MySQL-Einstellungen, verfügbarem Speicher, anderen laufenden Abfragen, Mondphase, Festplatteneffizienz usw.
Alles in allem ist es am besten, in Ihrer Umgebung alle verfügbaren Optionen zu testen und auszuwählen, was für Sie am besten funktioniert.