Mysql
 sql >> Datenbank >  >> RDS >> Mysql

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

Sie sollten entweder Volltextindizes verwenden (Sie sagten, Sie können das nicht), eine Volltextsuche selbst entwerfen oder die Suche von MySQL auslagern und Sphinx/Lucene verwenden. Für Lucene können Sie die Zend_Search_Lucene-Implementierung von Zend Framework verwenden oder Solr verwenden.

Normale Indizes in MySQL sind B+Bäume, und sie können nicht verwendet werden, wenn der Beginn der Zeichenfolge nicht bekannt ist (und dies ist der Fall, wenn Sie am Anfang einen Platzhalter haben)

Eine andere Möglichkeit besteht darin, die Suche mithilfe der Referenztabelle selbst zu implementieren. Teilen Sie den Text in Wörter auf und erstellen Sie eine Tabelle, die das Wort record_id enthält. Dann teilen Sie bei der Suche die Abfrage in Wörter auf und suchen nach jedem der Wörter in der Referenztabelle. Auf diese Weise beschränken Sie sich nicht auf den Anfang des gesamten Textes, sondern nur auf den Anfang des angegebenen Wortes (und Sie finden sowieso den Rest der Wörter)