Heim >Datenbank >MySQL-Tutorial >Wie kann ich in MySQL effizient nach mehreren Zeichenfolgen in einer durch Kommas getrennten Liste suchen?
MySQL: Optimierung der Suche nach mehreren Zeichenfolgen in durch Kommas getrennten Listen
MySQLs find_in_set
-Funktion bietet einen einfachen Ansatz für die Suche nach einzelnen Zeichenfolgen in durch Kommas getrennten Listen. Die gleichzeitige Suche nach mehreren Zeichenfolgen mit find_in_set
weist jedoch erhebliche Einschränkungen auf. In diesem Artikel werden diese Einschränkungen untersucht und eine überlegene Alternative zur Verwendung regulärer Ausdrücke vorgestellt.
Die find_in_set
Mängel
Die Haupteinschränkung von find_in_set
ist die Unfähigkeit, mehrere Suchzeichenfolgen in einer einzigen Abfrage zu verarbeiten. Problematisch wird diese Einschränkung bei großen Datensätzen oder zahlreichen Suchbegriffen.
Ein effizienterer Ansatz: Nutzung regulärer Ausdrücke
Der Vorschlag, mehrere find_in_set
Aufrufe mit dem OR-Operator zu verketten, ist ineffizient und wird schnell unhandlich. Eine weitaus skalierbarere und effizientere Lösung sind die regulären Ausdrucksfunktionen von MySQL. Die folgende Abfrage zeigt dies:
<code class="language-sql">WHERE CONCAT(",", `setcolumn`, ",") REGEXP ",(val1|val2|val3),"</code>
Hier bezieht sich setcolumn
auf die Spalte, die Ihre durch Kommas getrennte Liste enthält, und val1
, val2
und val3
sind die Zeichenfolgen, nach denen Sie suchen. Der REGEXP
-Operator prüft, ob die verkettete Zeichenfolge (einschließlich führender und nachfolgender Kommas) mit dem regulären Ausdrucksmuster übereinstimmt. Dieses Muster sucht nach einem der angegebenen Werte, getrennt durch Kommas.
Vorteile der Regexp-Methode
Der Ansatz mit regulären Ausdrücken bietet mehrere entscheidende Vorteile:
find_in_set
Vorgänge, insbesondere bei einer wachsenden Anzahl von Suchbegriffen.Diese auf Regexp basierende Lösung bietet eine robustere und effizientere Methode für die Suche nach mehreren Zeichenfolgen in durch Kommas getrennten Listen in MySQL.
Das obige ist der detaillierte Inhalt vonWie kann ich in MySQL effizient nach mehreren Zeichenfolgen in einer durch Kommas getrennten Liste suchen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!