Heim >Datenbank >MySQL-Tutorial >Wie kann ich mehrspaltige LIKE-Abfragen in MySQL beschleunigen?

Wie kann ich mehrspaltige LIKE-Abfragen in MySQL beschleunigen?

Susan Sarandon
Susan SarandonOriginal
2024-12-11 00:37:10943Durchsuche

How Can I Speed Up Multi-Column LIKE Queries in MySQL?

Beschleunigung von LIKE-Abfragen für mehrere Spalten in MySQL

Bei häufigen SELECT ... LIKE '%text%'-Abfragen für a Bei einer mehrspaltigen MySQL-Tabelle fragt man sich natürlich, ob die Indizierung die Leistung verbessern kann. Leider können Indizes, die auf von links beginnende Zeichen verweisen, bei LIKE-Anfragen „%text%“ nicht hilfreich sein, da der Platzhalter unterschiedliche Zeichen vor dem angegebenen Text zulässt.

Anstatt sich auf Indizes zu verlassen, empfiehlt MySQL die Verwendung Volltextsuche (FTS) für MyISAM-Tabellen. FTS indiziert Wörter innerhalb von Textspalten und ermöglicht so eine effiziente Suche, selbst wenn der Zieltext irgendwo in der Spalte erscheint.

Alternative Optionen für Nicht-MyISAM-Tabellen

Für Tabellen, die es sind Nicht MyISAM-basiert, Sie können ein benutzerdefiniertes Indexierungssystem implementieren. Erstellen Sie eine Indextabelle, die Wörter zusammen mit ihren entsprechenden IDs in der tatsächlichen Tabelle speichert. Dieser Ansatz ermöglicht eine effiziente Suche, indem die LIKE-Abfrage „%text%“ in einzelne Wortsuchen zerlegt wird.

Auswirkungen auf Festplattennutzung und Leistung

FTS-Indizes verbrauchen mehr Speicherplatz im Vergleich zu herkömmlichen Indizes. Das Einfügen und Löschen von Datensätzen hat jedoch keinen wesentlichen Einfluss auf die Leistung des FTS-Index.

Update: Volltextsuche für InnoDB-Tabellen

Ab MySQL 5.6, Volltext Die Suchfunktion ist auch für InnoDB-Tabellen verfügbar und bietet eine leistungsstarke Suchlösung, die den Anforderungen Ihrer Abfrage entspricht.

Das obige ist der detaillierte Inhalt vonWie kann ich mehrspaltige LIKE-Abfragen in MySQL beschleunigen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn