Bei Datenbankabfragen steht man vor dem Dilemma, die optimale Abfrage für die Suche auszuwählen Zeilen basierend auf bestimmten Schlüsselwörtern in mehreren Spalten. Diese Frage vergleicht zwei Ansätze:
Diese Abfrage verwendet die Volltextindizierung, um nach Dokumenten zu suchen, die die Schlüsselwörter „foo“ und „bar“ enthalten die angegebenen Spalten „foo_desc“ und „bar_desc.“ In MySQL-Versionen 5.6 und höher wird MATCH AGAINST für InnoDB-Tabellen unterstützt.
Diese Abfrage verkettet die Werte aus den beiden Spalten und verwendet LIKE zur Ausführung eine Teilzeichenfolgensuche nach „foo“ und „bar“ im Ergebnis string.
MATCH AGAINST zeigt eine überlegene Leistung bei MyISAM-Tabellen und nutzt Volltextindizes, um effizient nach Schlüsselwörtern zu suchen. Im Gegensatz dazu führt LIKE einen vollständigen Tabellenscan durch und durchsucht jede Zeile nach Schlüsselwörtern, was bei großen Datensätzen zeitaufwändig sein kann.
LIKE ist nur wirksam, wenn es direkt auf eine Spalte angewendet wird (kein Funktionsergebnis), wenn das Suchmuster mit dem Anfang der Spalte übereinstimmt und wenn die Spalte indiziert ist. Andernfalls wird standardmäßig ein vollständiger Tabellenscan durchgeführt, was für große Datenmengen unpraktisch wird.
Eine Einschränkung von MATCH AGAINST in MySQL besteht darin, dass es Entspricht nur ganzen Wörtern. Daher wird eine Suche nach „bla“ nicht mit einer Spalte übereinstimmen, die „bla“ enthält, aber eine Suche nach „bla*“ wird sie finden.
Basierend auf Leistungsüberlegungen und den Einschränkungen von LIKE ist MATCH AGAINST die bevorzugte Wahl für die Suche großer Datensätze nach Schlüsselwörtern in mehreren Spalten. Es nutzt die Effizienz der Volltextindizierung, um schnelle und genaue Ergebnisse zu liefern.
Das obige ist der detaillierte Inhalt vonMATCH AGAINST oder LIKE: Was ist besser für mehrspaltige Schlüsselwortsuchen in MySQL?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!