Optimieren Sie Tabellen für die Suche mit der LIKE-Klausel in MySQL

Ich erstelle eine Suchfunktion für den Nachrichtenteil meiner Website und habe eine Nachrichtendatenbank mit etwas mehr als 9.000.000 Zeilen sowie einen Index für diesender, subject, undmessage Felder. Ich hatte gehofft, die LIKE-MySQL-Klausel in meiner Abfrage zu verwenden, z. B. (ex).

WÄHLENsender, subject, message VONMessages WOHERmessage LIKE '% EXAMPLE_QUERY%';

Ergebnisse abrufen. Leider verwendet MySQL keine Indizes, wenn ein führender Platzhalter vorhanden ist. Dies ist erforderlich, damit die Suchabfrage an einer beliebigen Stelle in der Nachricht angezeigt werden kann (so funktionieren die Platzhalter, nicht wahr?). Abfragen sindsehr sehr langsam und ich kann auch keinen Volltextindex verwenden, weil die 50% -Regel ärgerlich ist (ich kann es mir einfach nicht leisten, so viel auszuschließen). Gibt es überhaupt (oder überhaupt eine Alternative dazu), um eine Abfrage mit like und zwei Wildcards zu optimieren? Jede Hilfe wird geschätzt.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage