Volltextsuche beschleunigen - aber wie?

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Volltextsuche beschleunigen - aber wie?

    Hallo zusammen,

    ich habe eine DB mit derzeit etwa 1 Mio Einträgen (~300MB). Mittels Ajax Suggest biete ich bei Eingabe schonmal vorab 5 Suchresultate an. Was mich schon jetzt daran stört. Es dauert etwas zu lange. Was passiert dann erst bei 5 Mio Einträgen!?
    Die DB habe ich auf myISAM stehen weil InnoDB viel zu langsam beim Updaten aus CSV Dateien war. Mit viel zu langsam meine ich etwa Factor 20.

    Heute morgen wollte/habe ich das ganze von
    Code:
    SELECT * from tab WHERE Feld  like %suchstring% order by xxx LIMIT 5
    nach FULLTEXT
    Code:
    Select * from tab Where ... AND Match () Against () in Boolean Mode ORDER by xxx LIMIT 5
    umgebaut. Das war gar nicht so einfach wie es anfangs aussah. Aber jetzt läuft es auch so rum.

    Im FULLTEXT habe ich 2 Spalten aufgenommen ( 1 x varchar(255) und 1 x varchar(1024).
    Es scheint nun so, als würde es etwas schneller laufen. Jedoch bin ich mit dem Result (etwa 2 sek.) nicht zufrieden. Andere Webseiten bekommen das sehr viel schneller hin.

    Nun meine Frage: War mein Umbau nun die beste Möglichkeit für mySQL5.7.
    Würde es ne Menge bringen es in eine (MEMORY) DB zu packen? Die CSV's werden eh 1 x am Tag neu eingelesen.

    Die Maschine ist ein 4Core AMD mit 4GB RAM.

    Hat da jemand Verbesserungsvorschläge?

    PHP 8.0, MariaDB 10.5 auf U20.04

  • #2
    Vermutlich wird bei nur 5 Vorschlägen nicht wirklich eine Volltextsuche nötig sein. Falls kein Primary vergeben ist, den auf die eine zu durchsuchende Spalte legen (sofern möglich, sonst einfachen Key) und die Abfrage sinngemäss so umschreiben, dass nur der Anfang überprüft wird und nicht, ob der Suchstring irgendwo in dem Feld auftaucht.
    Für die Vorschläge dürfte das mehr als ausreichend sein und der Geschwindigkeitsvorteil dürfte deutlich spürbar werden.

    edit:
    Memory-Engine ist natürlich immer besser, falls die bedenkenlos eingesetzt werden kann.

    Kommentar

    Lädt...
    X