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

Wie beschleunigt man SELECT .. LIKE-Abfragen in MySQL für mehrere Spalten?

Ein Index würde die Abfrage nicht beschleunigen, da Indexe für Textspalten funktionieren, indem sie N Zeichen beginnend von links indizieren. Wenn Sie '%text%' LIKE tun, kann der Index nicht verwendet werden, da vor dem Text eine variable Anzahl von Zeichen stehen kann.

Was Sie tun sollten, ist, eine solche Abfrage überhaupt nicht zu verwenden. Stattdessen sollten Sie etwas wie FTS (Full Text Search) verwenden, das MySQL für MyISAM-Tabellen unterstützt. Es ist auch ziemlich einfach, ein solches Indizierungssystem für Nicht-MyISAM-Tabellen selbst zu erstellen, Sie brauchen nur eine separate Indextabelle, in der Sie Wörter und ihre relevanten IDs in der eigentlichen Tabelle speichern.

Aktualisieren

Volltextsuche verfügbar für InnoDB-Tabellen mit MySQL 5.6+.