Bei häufigen Abfragen wie SELECT x, y, z FROM table WHERE x LIKE '%text%' ODER y LIKE '%text%' ODER z LIKE '%text%', um MySQL dafür zu optimieren Operationen werden unabdingbar. Während Indizes in der Regel die Abfrageeffizienz für indizierte Spalten verbessern, liegt das Problem in der Verwendung von Platzhaltern (%text%) in der LIKE-Klausel.
Bei Textspalten funktionieren Indizes durch die Indizierung von Zeichen beginnend von links. Allerdings verhindern LIKE-Abfragen mit führenden und nachgestellten Platzhaltern (z. B. %text%) die Indexnutzung, da die Startposition des Textes unbekannt ist.
Eher Anstatt sich auf Indizes zu verlassen, sollten Sie die folgenden Ansätze in Betracht ziehen:
Wenn die betroffene Tabelle die MyISAM-Speicher-Engine verwendet, stellt MySQL FTS bereit. Diese Funktion ermöglicht eine effiziente Textsuche durch die Indizierung ganzer Wörter anstelle einer festen Anzahl von Zeichen.
Erstellen Sie für Nicht-MyISAM-Tabellen ein separates Indextabelle, die Wörter und ihre entsprechenden IDs in der Haupttabelle speichert. Dies ahmt im Wesentlichen die FTS-Funktionalität nach und ermöglicht eine schnelle Suche nach indizierten Begriffen.
MySQL-Versionen 5.6 und höher erweitern die FTS-Unterstützung auf InnoDB-Tabellen und bieten so eine effiziente Alternative für beide Speicher-Engines.
Das obige ist der detaillierte Inhalt vonWie kann ich mehrspaltige LIKE-Abfragen in MySQL optimieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!