Wenn ak
ein Wort, dann würde ein Volltextindex arbeiten (wenn Sie die minimale Wortlänge einstellen, siehe unten).
Also, eine Suche nach 'ak' mit einem FULLTEXT- Index würde auf diesem Spiel:
- 'Dieses ak das.'
- 'AK'
- 'AK. Was auch immer.'
- 'Was auch immer. AK.
Aber es würde nicht passen:
Es passen müssen Wortgrenzen in Ordnung sein.
Der Standardwert minimum word length für eine FULLTEXT-Suche ist 4 Zeichen. Du kannst FULLTEXT also nicht nach 'ak' suchen, weil es zu kurz ist. Sie können die Einstellung für die minimale Wortlänge verringern, aber Sie erhalten die Wörter 'the', 'and' und alle anderen Wörter mit drei oder weniger Buchstaben, die Sie nicht mit Ihrem FULLTEXT-Index überladen möchten.
Suche mit LIKE könnte Ihre einzige praktikable Option sein. Wenn Sie einen führenden Platzhalter ('%ak'
) verwenden, kann MySQL keinen Index zum Suchen des Datensatzes verwenden. Es muss alle Zeilen einscannen. Dennoch wird der Index zum Scannen verwendet, wenn Sie einen Deckungsindex haben.
Also, für Ihre Anfrage:
SELECT synonym_group FROM synonym WHERE name LIKE '%ak%'
Wenn Sie eine mehrspaltige haben, Abdecken, Index auf (name, synonym_group)
, wird es tatsächlich nutzen immer noch den Index die Abfrage zu beantworten, aber nicht im traditionellen Sinn. MySQL durchsucht den Index, der in der Regel schneller ist als die eigentlichen Tabellendaten (Table Scan). Darüber hinaus verfügt das ideale System über genügend Arbeitsspeicher, um alle Indizes im Arbeitsspeicher zu speichern. Es wird also nur Arbeitsspeicher und nicht Arbeitsspeicher gescannt.
Mit dem Deckungsindex hätte die Größe Ihrer Zeilen keine Auswirkung.
Ohne den Deckungsindex würde die Größe Ihrer Zeilen die Scan-Geschwindigkeit beeinflussen, da sich die Festplatte weiter bewegen muss.
Wenn Sie am Ende Tabellenscans durchführen, sollten Sie Ihre Tabelle defragmentieren und vorzugsweise Zeilen fester Länge (CHAR anstelle von VARCHAR) haben.
Verwenden Sie diese Abfrage, um einen einzelnen Datensatz zu finden, oder können Sie mehrere Datensätze zurückgeben? Bitte geben Sie ein oder zwei Beispiele für die Zeichenfolge an, mit der die Übereinstimmung erwartet wird. –