grosses Performance Problem :)

grosses Performance Problem :)

am 20.12.2005 14:50:37 von Reinhard Glauber

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

Reinhard

Re: grosses Performance Problem :)

am 20.12.2005 15:08:13 von Dominik Echterbruch

Reinhard Glauber wrote:
> 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 ?

Am Besten gar nicht. Das ist ein klassischer Fall für einen FULLTEXT
Index. [1] sagt dir, wie das geht.

[1] http://dev.mysql.com/doc/refman/5.0/en/fulltext-search.html


Grüße,
Dominik
--
MonstersGame - Die Schlacht zwischen Vampiren und Werwölfen
http://spielwelt6.monstersgame.net/?ac=vid&vid=3018786

Re: grosses Performance Problem :)

am 20.12.2005 15:23:27 von Sven Paulus

Reinhard Glauber wrote:
> suche ich nun aber nach
> where word LIKE '%$suchstring' .. dauert das ganze quälende 5-10 Sekun=
den
> 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 ?

Naja, als ganz wueste Loesung koenntest Du natuerlich
Applikationsseitig den String rumdrehen (abc -> cba) und in eine
weitere Spalte word_rev packen, darauf einen Index legen und bei
Abfragen der 2. Art dann eben wieder mit WHERE word_rev LIKE
'$suchstring_rueckwaerts%' in die Tabelle gehen ...

Re: grosses Performance Problem :)

am 20.12.2005 17:11:39 von Christian Kirsch

Sven Paulus schrieb:
> Reinhard Glauber wrote:
>
>>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 ?
>
>
> Naja, als ganz wueste Loesung koenntest Du natuerlich
> Applikationsseitig den String rumdrehen (abc -> cba) und in eine
> weitere Spalte word_rev packen, darauf einen Index legen und bei
> Abfragen der 2. Art dann eben wieder mit WHERE word_rev LIKE
> '$suchstring_rueckwaerts%' in die Tabelle gehen ...

Was war in Deinen Weihnachtskeksen?

SCNR

Re: grosses Performance Problem :)

am 20.12.2005 21:57:18 von Matthias Esken

On Tue, 20 Dec 2005 17:11:39 +0100, Christian Kirsch wrote:

> Sven Paulus schrieb:
>
>> Naja, als ganz wueste Loesung koenntest Du natuerlich
>> Applikationsseitig den String rumdrehen (abc -> cba) und in eine
>> weitere Spalte word_rev packen, darauf einen Index legen und bei
>> Abfragen der 2. Art dann eben wieder mit WHERE word_rev LIKE
>> '$suchstring_rueckwaerts%' in die Tabelle gehen ...
>
> Was war in Deinen Weihnachtskeksen?

Da muss nix drin gewesen sein, die Idee ist nämlich gut. Wir setzen das in
größerem Umfang seit Jahren erfolgreich ein.

Gruß,
Matthias

Re: grosses Performance Problem :)

am 20.12.2005 23:14:33 von Reinhard Glauber

"Dominik Echterbruch" schrieb im Newsbeitrag
news:1135087693.67657.1@doris.uk.clara.net...
> Reinhard Glauber wrote:
> > Ich hab eine Datenbank mit einer Tabelle words die 8.500.000
Datensätzen
> > enthält ....

> Am Besten gar nicht. Das ist ein klassischer Fall für einen FULLTEXT
> Index. [1] sagt dir, wie das geht.
>
> [1] http://dev.mysql.com/doc/refman/5.0/en/fulltext-search.html



Danke, der Tipp war Gold wert .. Nun krieg ich 516 Zeilen in 1 Sekunde
zurück

A B E R

das Dumme ist, ich kann nicht nach 'mue' suchen, wenn das Wort nicht
vorhanden ist ...

"muenchen" bringt 516 Ergebnisse aber "mue" nix :((((((

Weiss da jemand was ?

Danke

Re: grosses Performance Problem :)

am 21.12.2005 00:47:10 von Sven Paulus

Reinhard Glauber wrote:
> das Dumme ist, ich kann nicht nach 'mue' suchen, wenn das Wort nicht
> vorhanden ist ...
> "muenchen" bringt 516 Ergebnisse aber "mue" nix :((((((
> Weiss da jemand was ?

Ja, da kommst Du mit Volltext-Suche nicht weiter, sondern Du
benoetigst Halbtext-Suche, so wie sie in PostgreSQL ab 12.3i
implementiert ist. MySQL ist da mal wieder ewig hintendran.

Re: grosses Performance Problem :)

am 21.12.2005 09:38:10 von Andreas Lange

Am 21.12.2005, 00:47 Uhr, schrieb Sven Paulus :
> Reinhard Glauber wrote:
>> das Dumme ist, ich kann nicht nach 'mue' suchen, wenn das Wort nicht
>> vorhanden ist ...
>> "muenchen" bringt 516 Ergebnisse aber "mue" nix :((((((
>> Weiss da jemand was ?
>
> Ja, da kommst Du mit Volltext-Suche nicht weiter, sondern Du
> benoetigst Halbtext-Suche, so wie sie in PostgreSQL ab 12.3i
> implementiert ist. MySQL ist da mal wieder ewig hintendran.

http://dev.mysql.com/doc/refman/5.0/en/fulltext-boolean.html

Sollte doch mit dem * Operator nicht das Problem sein ...

--
Andreas Lange

Re: grosses Performance Problem :)

am 21.12.2005 12:14:14 von Stefan Rybacki

Sven Paulus wrote:
> Reinhard Glauber wrote:
>
>>das Dumme ist, ich kann nicht nach 'mue' suchen, wenn das Wort nicht
>>vorhanden ist ...
>>"muenchen" bringt 516 Ergebnisse aber "mue" nix :((((((
>>Weiss da jemand was ?
>
>
> Ja, da kommst Du mit Volltext-Suche nicht weiter, sondern Du
> benoetigst Halbtext-Suche, so wie sie in PostgreSQL ab 12.3i

Ist mir was entgangen? PostgreSQL 12.3i? ;)

Bis denn dann
Stefan

> implementiert ist. MySQL ist da mal wieder ewig hintendran.
>
>
>

Re: grosses Performance Problem :)

am 21.12.2005 14:05:22 von Hartmut Holzgraefe

Stefan Rybacki wrote:
> Ist mir was entgangen? PostgreSQL 12.3i? ;)

ja, die tags? ;)


--
Hartmut Holzgraefe, Senior Support Engineer .
MySQL AB, www.mysql.com

http://www.mysql.com/support/

Re: grosses Performance Problem :)

am 22.12.2005 13:25:26 von Reinhard Glauber

>
> Sollte doch mit dem * Operator nicht das Problem sein ...


funktioniert leider nicht :(

Re: grosses Performance Problem :)

am 22.12.2005 14:07:58 von Reinhard Glauber

> Ja, da kommst Du mit Volltext-Suche nicht weiter, sondern Du
> benoetigst Halbtext-Suche, so wie sie in PostgreSQL ab 12.3i
> implementiert ist. MySQL ist da mal wieder ewig hintendran.


Gut, und wie konvertiere ich die MYSQl Datenbank nach POSTSGRE-SQL ?

Re: grosses Performance Problem :)

am 22.12.2005 14:53:28 von Andreas Kretschmer

Andreas
--
Andreas Kretschmer
Linux - weil ich es mir wert bin!
GnuPG-ID 0x3FFF606C http://wwwkeys.de.pgp.net

Re: grosses Performance Problem :)

am 22.12.2005 16:01:46 von dev-null-use-reply-adress

Reinhard Glauber schrieb:
>>
>> Sollte doch mit dem * Operator nicht das Problem sein ...
>
> funktioniert leider nicht :(

Glaube ich nicht. Du hast bestimmt etwas im Statement vergessen
und ich kann mir auch denken was. *g* Ließ das Manual nochmal.
http://dev.mysql.com/doc/refman/5.0/en/fulltext-boolean.html


Gruß
JPM

Re: grosses Performance Problem :)

am 24.12.2005 09:30:40 von Reinhard Glauber

"Andreas Kretschmer" schrieb im
Newsbeitrag news:nnnq73-d45.ln1@tux.schollglas.com...
Du willst aber vermutlich eher bei MySQL bleiben und erst
> einmal die nicht vorhandenen Smilys im von Dir gequoteten Text
> entdecken.


hmmmmmm, was willst du mir damit sagen ? :)

Re: grosses Performance Problem :)

am 24.12.2005 09:31:29 von Reinhard Glauber

"Jens Peter Moeller" schrieb
im
Newsbeitrag news:43aabfc7$0$16510$9b4e6d93@newsread4.arcor-online.net...

> Glaube ich nicht. Du hast bestimmt etwas im Statement vergessen
> und ich kann mir auch denken was. *g* Ließ das Manual nochmal.


OH JA GROSSER MEISTER, du hattest recht .... :)
*verneig*

Danke