# Select-Abfragen sind sehr langsam



## Guest (18. Jun 2004)

Hallo. Ich habe eine MySQL-Datenbank mit einer Tabelle mit Bestellungen. Zur Zeit ca. 50.000 Sätze. Suche ich nun per 

"select * from bestellungen where status != 99 and upper(ort) like upper('%HAMBURG%') order by auftragsnummer desc"

nach den Treffern, braucht die Abfrage stolze 8 Sekunden! Das kann man niemandem zumuten :roll: 

Auf Ort habe ich einen Index gelegt, Status und Auftragsnummer auch. Leider muß ich auch mit dem LIKE arbeiten, da z.B. Kunden aus Italien "Trieste" und nicht "Triest" schreiben.

Kann von euch vielleicht jemand sagen, woran das liegen kann?

Wäre echt klasse! Danke!


----------



## Jaraz (18. Jun 2004)

Hm,

hängt von der Maschine ab.
Ich bekomme bei einer ähnlichen Abfrage allerdings mit 800000 Datensätzen 2 Sekunden raus.
Ist allerdings auch eine doppel Xeon Maschine.

Der Index greift bei einer like Abfrage allerdings nicht. (mysql 3.x)

Kannst du den Ort nicht in eine extra Tabelle auslagern?

Gruß Jaraz


----------



## Guest (18. Jun 2004)

Leider nicht. Mein größtes Problem scheint die Order-by-Geschichte zu sein. Noch schlimmer ist es, wenn ich order by auf ein double-Feld mache, da warte ich ca. eine Minute. Kann doch nicht angehen.

Ist ein AMD1700 mit 1GB RAM, nichts tolles.


----------



## stev.glasow (18. Jun 2004)

Ist vielleicht nur ne Kleinigkeit, aber wäre "lower(ort) like '%hamburg%' " in deinem Fall nicht etwas schneller ?
Und wenn nicht, das Wort HAMBURG ist schon in Großbuchstaben, da braucht man nix mehr 'uppen'
<edit>Aber mal ehrlich jetzt, wieso lagerst du nicht aus ?!?


----------



## nollario (19. Jun 2004)

Anonymous hat gesagt.:
			
		

> Auf Ort habe ich einen Index gelegt, Status und Auftragsnummer auch. Leider muß ich auch mit dem LIKE arbeiten, da z.B. Kunden aus Italien "Trieste" und nicht "Triest" schreiben.



hast du jeweils einen index angelegt? oder für alle einen?

schliesse mich der auslagerungvariante von steve ansonsten an.


----------



## Guest (21. Jun 2004)

Vielen Dank zusammen! Das Problem hat sich erledigt. Ich habe die Tabellentypen von InnoDB auf MyIsam gesetzt, die jeweiligen Indizies auf Fulltext gesetzt. Nun ist der so schnell wie ich es von Oracle oder DB2 her kannte.


----------



## nollario (21. Jun 2004)

das ist dann natürlich nicht unbedingt ein gütesiegel für MySql...

by the way: Hat schon mal jemand auf MaxDB getestet/ gearbeitet? bin ich gerade mal auf SUSE am ausprobieren...


----------



## Oliver001 (24. Jun 2004)

Welches ini-File hast Du verwendet?


----------

