grosses Performance Problem

Soapp

Erfahrenes Mitglied
Ich hab eine Datenbank mit einer Tabelle words die 8.500.000 Datensätzen
enthält ....

suche ich nun nach
where word LIKE '$suchstring%' .. passt alles .. ca. 1 Sekunde

suche ich nun aber nach
where word LIKE '%$suchstring' .. dauert das ganze quälende 5-10 Sekunden

Logischweise ist für word ein index eingerichtet, sodass er in der 1. Abfrage
wenig Zeit braucht ..

wie kann ich aber die 2. Abfrage optimieren ?

Danke
 
Folgender Trick könnte helfen:

Füge eine weitere Spalte in die Tabelle ein, die du z.B. word_r nennst.

Dort fügst du jeweils das Wort rückwärts gelesen ein.
Dann erzeugst Du einen Index auf die neue Spalte und suchst in dem Falle, wo das Prozentzeichen vorne stehen soll nicht nach
word LIKE "%$wort" sondern nach
word_ LIKE "$wort_rueck%" (also der umgedrehten Zeichenkette)

Bsp.

word LIKE "%hallo"
wird zu
word_r LIKE "ollah%"

alles klar?

Wichtig:
Die Suche nach "%hallo%"
dauert dann aber trotzdem lange.

Die müßtest Du dann als
word LIKE "hallo%" and word_r LIKE "ollah%" durchführen.

Das sollte ganz gut gehen

vop
 
Zurück