Heim >Datenbank >MySQL-Tutorial >## Wie kann ich MySQL LIKE \'%string%\'-Abfragen in InnoDB effizient gestalten?

## Wie kann ich MySQL LIKE \'%string%\'-Abfragen in InnoDB effizient gestalten?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-10-25 07:23:29795Durchsuche

## How Can I Make MySQL LIKE '%string%' Queries Efficient in InnoDB?

Optimierung von MySQL-Abfragen für LIKE '%string%' in InnoDB

Problembeschreibung

Bei Verwendung der LIKE-Klausel „%string%“ in einer Abfrage einer InnoDB-Tabelle wird beobachtet, dass der Index in der Spalte „keywords“ unwirksam wird, was zu vollständigen Tabellenscans führt.

Die Lösung

InnoDB-Indizes sind für Zeichenfolgenvergleiche optimiert, die am Anfang der indizierten Spalte beginnen. Die LIKE-Klausel „%string%“ ermöglicht jedoch, dass der Suchbegriff an einer beliebigen Stelle in der Spalte erscheint. Diese Art von Abfrage kann keine startbasierten Indizes verwenden, da der Suchbegriff nicht am Anfang der Zeichenfolge verankert ist.

Volltextindex als optimale Lösung

Zur Optimierung Für Abfragen, die schwebende Suchbegriffe in InnoDB beinhalten, sollten Volltextindizes verwendet werden. Volltextindizes sind speziell für die Verarbeitung solcher Abfragen konzipiert, da sie einen flexiblen String-Abgleich ermöglichen.

Upgrade auf MySQL 5.6.4 oder höher

InnoDB-Unterstützung für Volltextindizes war eingeführt in MySQL 5.6.4. Wenn Ihre MySQL-Version älter als 5.6.4 ist, wird ein Upgrade empfohlen, um diese Funktion nutzen zu können. Durch ein Upgrade auf MySQL 5.6.4 oder höher können Sie Volltextindizes verwenden, um LIKE „%string%“-Abfragen in InnoDB zu optimieren.

Das obige ist der detaillierte Inhalt von## Wie kann ich MySQL LIKE \'%string%\'-Abfragen in InnoDB effizient gestalten?. 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