„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Wie kann ich dafür sorgen, dass die FIND_IN_SET-Funktion von MySQL Indizes verwendet?

Wie kann ich dafür sorgen, dass die FIND_IN_SET-Funktion von MySQL Indizes verwendet?

Veröffentlicht am 12.11.2024
Durchsuche:959

How Can I Make MySQL's FIND_IN_SET Function Utilize Indices?

Kann MySQL FIND_IN_SET so gestaltet werden, dass es Indizes verwendet?

Die Funktion FIND_IN_SET von MySQL ist dafür bekannt, dass sie keine Indizes verwendet, was zu ineffizienten Abfragen führt. Es gibt jedoch alternative Ansätze, um das gewünschte Indexierungsverhalten beim Umgang mit durch Kommas getrennten Listen zu erreichen.

Der Bereichsansatz

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.

Die folgende Abfrage führt beispielsweise eine Bereichssuche mit einem Index für durch Spalte „id“:

explain 
select * from ratings where id in (2331425, 430364, 4557546, 2696638, 4510549, ...)

SQL-Injection-Angriffe:

Die Verwendung von vom Benutzer bereitgestellten Daten in gespeicherten Prozeduren kann Möglichkeiten für SQL-Injection-Angriffe eröffnen. Eine ordnungsgemäße Bereinigung ist unerlässlich, um die Ausführung von bösartigem Code zu verhindern.
  • Tabellenscans: Wenn die für die Bereichssuche verwendete Spalte nicht indiziert ist oder Werte ungleich Null aufweist, kann dies zu einem gefürchteten Tabellenscan führen , was für große Datensätze äußerst ineffizient ist.
Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3