Heim > Datenbank > MySQL-Tutorial > Hauptteil

Kann MySQLs FIND_IN_SET oder eine gleichwertige Funktion Indizes verwenden?

Patricia Arquette
Freigeben: 2024-11-05 21:22:02
Original
192 Leute haben es durchsucht

Can MySQL's FIND_IN_SET or an Equivalent Function Utilize Indices?

Kann MySQL FIND_IN_SET oder ein Äquivalent Indizes verwenden?

Die Abfrage SELECT * FROM Foo WHERE FIND_IN_SET(id, '2,3') nutzt den Primärschlüsselindex nicht aus. Dies wird deutlich, wenn man die EXPLAIN-Ausgabe mit der Ausgabe für SELECT * FROM Foo WHERE id IN (2,3) vergleicht, die den Index verwendet.

Ziel: Konstruieren Sie eine gespeicherte Prozedur, die sich verhält Wie bei der zweiten Abfrage wird der Index ohne vorherige Kenntnis der durch Kommas getrennten Zeichenfolge mit den IDs verwendet.

Lösung:

Erstellen Sie eine vorbereitete Anweisung, die eine Zeichenfolge als akzeptiert ein Parameter:

CREATE PROCEDURE my_sp(@id_string NCHAR(1000))
Nach dem Login kopieren

Die vorbereitete Anweisung kann dann mit der durch Kommas getrennten Zeichenfolge als Argument ausgeführt werden:

EXEC my_sp '2,3'
Nach dem Login kopieren

Dieser Ansatz erreicht die folgenden gewünschten Bedingungen:

  • Typ ist Bereich (nicht ALLE)
  • Schlüssel ist nicht NULL

Diese Bedingungen zeigen an, dass der Index verwendet wird.

Sicherheitsüberlegungen:

Vorbereitete Anweisungen verringern das Risiko von SQL-Injection-Angriffen. Es ist jedoch immer noch wichtig, sicherzustellen, dass die vom Benutzer bereitgestellten Daten bereinigt werden, um SQL-Injection-Angriffe der zweiten Ebene zu verhindern.

Das obige ist der detaillierte Inhalt vonKann MySQLs FIND_IN_SET oder eine gleichwertige Funktion Indizes verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage