Optimierung der MySQL-Suche mit „Gefällt mir“ und Platzhaltern
MySQL-Abfragen mit „Gefällt mir“ mit führenden Platzhaltern, wie zum Beispiel „SELECT * FROM sometable“. WHERE somefield LIKE '%value%'" leiden häufig unter Leistungsproblemen. Der führende Platzhalter verhindert, dass das DBMS Indizes nutzt, was zu langsameren Suchzeiten führt.
Optimierungsstrategie
Eine effektive Optimierungstechnik besteht darin, die Suchzeichenfolge in kleinere Fragmente zu zerlegen . Anstatt die gesamte Zeichenfolge „value“ zu speichern, speichern Sie alle möglichen Suffixe: „value“, „alue“, „lue“, „ue“ und „e“. Dadurch eliminieren Sie den führenden Platzhalter und ermöglichen der Datenbank, einen Index für eine schnellere Suche zu verwenden.
Überlegungen zur Speicherung
Die Kosten für die Speicherung aller Suffixe steigen quadratisch mit die Saitenlänge. Beispielsweise benötigt ein Wort mit fünf Buchstaben 2,5-mal mehr Speicherplatz als die ursprüngliche Zeichenfolge. Daher ist es wichtig zu ermitteln, ob dieser Speicheraufwand angesichts der Einschränkungen Ihrer Datenbank akzeptabel ist.
Überlegungen zur Wortaufteilung
Entscheiden Sie bei Phrasen mit mehreren Wörtern, wie diese aufgeteilt werden sollen Worte sind entscheidend. Sollten Sie beispielsweise „fünf Buchstaben“ als ein oder zwei Wörter speichern? Das Aufteilen von Wörtern schränkt möglicherweise die Suchflexibilität ein, aber wenn man sie als eine Einheit behält, erhöht sich der Speicherbedarf. Finden Sie eine Balance, die zu Ihren Suchmustern passt.
Zusätzliche Tipps
Erwägen Sie die Verwendung eines Sekundärindex für die Suffixspalte für schnellere Suchvorgänge. Indizieren Sie nur die erforderlichen Spalten, um Redundanz zu minimieren. Begrenzen Sie nach Möglichkeit die Anzahl der durch diese Abfragen generierten Zeilen, um Leistungsengpässe zu vermeiden.
Das obige ist der detaillierte Inhalt vonWie kann ich MySQL-Suchen mit „Gefällt mir“ und führenden Platzhaltern optimieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!