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