MySQL führt eine Fuzzy-Abfrage bei der Spitznamensuche durch. Wenn es zu viele Benutzer gibt, ist die Like-Abfrage sehr langsam.
MySQL führt eine Fuzzy-Abfrage bei der Spitznamensuche durch. Wenn es zu viele Benutzer gibt, ist die Like-Abfrage sehr langsam.
Erstellen Sie einen Index für das Spitznamenfeld in dieser Tabelle in der Datenbank
Schlüssel `nikename`(`nikename`)
Volltextindex mit SQL-Anweisung
ALTER TABLE `user` ADD FULLTEXT `fidx_user_nikename` (`nickname`)
Anschließend fragen Sie mit der folgenden Methode ab
<code>SELECT * FROM \`user\` WHERE MATCH (nickname)AGAINST ('xxx')</code>
Wenn es wie %name% ist, gibt es meines Wissens nach keine Möglichkeit. Wenn kein % davor steht, können Sie einen Index erstellen oder die LOCATE-Funktion ausprobieren, aber das hat wahrscheinlich keine Auswirkung.
Wo ist Instr?
Verwenden Sie für die Fuzzy-Suche die Wortsegmentierung. Sphinx Coreseek oder Xunsearch (Xunsou)
Wenn Ihre MySQL-Version höher als 5.7 ist, unterstützt der integrierte Ngram-Volltextindex die chinesische Wortsegmentierung. Ich habe ihn im Projekt verwendet, und es gibt bereits Tutorials zur Verwendung online
Verwenden Sie eine Suchmaschine, um häufig gesuchte Felder zu indizieren, und verwenden Sie sie dann zusammen mit Caching