Die FIND_IN_SET-Funktion von MySQL ist dafür berüchtigt, keine Indizes zu verwenden, was zu ineffizienten Abfragen führt. Es gibt jedoch alternative Ansätze, um das gewünschte Indizierungsverhalten beim Umgang mit durch Kommas getrennten Listen zu erreichen.
Die in der bereitgestellten Antwort beschriebene Technik schlägt die Verwendung einer vorbereiteten Anweisung mit einem Parameter vor Akzeptieren einer Zeichenfolge in Form einer durch Kommas getrennten Liste. Durch die Verwendung des Bereichstyps mit einem Schlüssel ungleich NULL in der vorbereiteten Anweisung wird sichergestellt, dass bei der Ausführung der IN-Klausel Indizes verwendet werden.
Beispielsweise führt die folgende Abfrage eine Bereichssuche mit einem Index für durch Spalte „id“:
explain select * from ratings where id in (2331425, 430364, 4557546, 2696638, 4510549, ...)
Während dieser Ansatz effiziente indizierte Abfragen ermöglicht, ist es wichtig, Folgendes zu berücksichtigen Beachten Sie folgende Vorsichtsmaßnahmen:
Das obige ist der detaillierte Inhalt vonWie kann ich dafür sorgen, dass die FIND_IN_SET-Funktion von MySQL Indizes verwendet?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!