Ladezeit Suchfunktion zu lange

cashi01

New Member
Hallo,
mit meiner Suchfunktion unter cash-auktion.de gibt es leider ein Problem bei dem ich dringend Hilfe benötige.
Sobald man über die Suchfunktion einen Artikel sucht beträgt die Ladezeit der gefundenen Artikel 3 bis 5 Minuten. Dieses Problem besteht allerdings erst ab ca. 2 Millionen Artikel. Da in meiner Datenbank mittlerweile stetig über 2,5 Millionen Artikel sind ist dies ein großes Problem geworden. Die Ladezeit der Startseite hatte dadurch bis vor kurzem bis zu 10 Minuten betragen. Ich habe daraufhin meinen Haus und Hofpragrammierer dieses Problem lösen lassen. Wie man sieht mit einem guten Resultat. Leider hat dies mein Budget doch ziemlich geschröpft da nicht nur die Startseite vernünftig umprogrammiert wurde sondern auch mysql. Vielleicht kann mir hier jemand helfen das Problem mit meiner Suchfunktion schnellstens zu lösen da es meiner Ansicht nach nur an der Programmierung liegt.
 
Last edited by a moderator:
Wo ist die konkrete Frage?

Von dem was Du gesagt hast kann ich nur folgendes sagen:
a) MySQL in den Buffern etwas optimieren.
b) Die Indexierung in MySQL und die Abfragen im PHP-Script optimieren.

Zu a) solltest Du Dir nicht zu viel versprechen.
Bei b) brauchen wir schon das ganze Datenbank-Schema und die genutzten Abfragen.

Ach ja, und natürlich noch:
c) Einen unabhängigen Experten mal über die Datenbank und den Code schauen lassen.
Programmierer sind nur selten Allwissend. :)

huschi.
 
Suchfunktion

Die Datenbank ist optimiert und indexiert worden.
Alleine dadurch wurde die Ladezeit der Startseite um ein vielfaches gekürzt.
Der Fehler liegt meiner Ansicht nach nur an der Programmierung der Suche.
Dies begründet sich daraus das auch die ursprüngliche Programmierung der Vorschauen auf der Startseite die Ladezeit ab ca. 600.000 Artikel erheblich nach oben schnellen lies. Nach der Optimierung der Datenbank und der neuen Programmierung der Vorschauen hat sich die Ladezeit der Startseite von ca. 5-10 Minuten (bei 2,5 Millionen Artikel) auf ca. 15 Sekunden bei DSL 1000 verkürzt. Leider kenne ich mich mit der PHP Programmierung nicht so gut aus als das ich die Umprogrammierung selbst machen kann. Ich benötige daher entweder ein passendes Suchscript oder jemanden der mir zeigt welche Abfrageart (Programmierung) die schnellste ist.
Ich habe die php Datei mal unter
http://www.cash-auktion.de/download/search2.dat
zum Download bereit gestellt damit Du dir mal ein Bild von dieser machen kannst. Die Endung dat muss Du dann natürlich auf php ändern.
 
Last edited by a moderator:
Ja, dort sieht man folgenden Code-Ausschnitt:
Code:
	 $rsl = mysql_query ("SELECT count(*) from auctions WHERE closed='0' and ( title LIKE '%$words%' or description LIKE '%$words%' )" );
	 if ($rsl)
	 {
		 $hash = mysql_fetch_array($rsl);
		 $total = (int)$hash[0];
	 }
	 else
		 $total = 0;
	 
	 $pages = (int)($total/$lines);
	 if (($total % $lines)>0)
	 	++$pages;
	 $result = mysql_query ( "SELECT * FROM auctions WHERE closed='0' and ( title LIKE '%$words%' or description LIKE '%$words%') ORDER BY ends LIMIT $left_limit,$lines" );
Zu Deinem Verständnis:
Grundsätzlich sind die Abfragen mit "LIKE" Performance-Fresser.
Und hier werden 2 Abfragen damit nacheinander auf größere Textbestände durchgeführt:
1. Um die Ergebnismenge (Anzahl Datensätze) auszulesen und
2. um die Datensätze für die Anzeige der Seite zu erhalten.

Diese zwei nur leicht unterschiedlichen Abfragen werden vom MySQL-Query-Cache aber nicht als gleich erkannt und er berechnet das Ergebnis jedesmal neu.
(Anmerkung an den Programmierer: Warum bei $total == 0 trotzdem nochmal die Abfrage?)

Lösung:
a) Die Abfrage nur einmal stellen und daraus sowohl die Anzahl der Datensätze als auch die benötigten Daten ziehen.

b) Optimierung der Datenbank und der Abfragen auf "Fulltext".
Siehe dazu MySQL AB :: MySQL 5.0 Reference Manual :: 11.8 Full-Text Search Functions

huschi.
 
Suchfunktion

Sowas habe ich mir schon gedacht. Nur leider kenne ich mich mit php Programmierung nicht aus und zu der Firma die das Script programmiert hat habe ich kein besonderes Vertrauen mehr.
Ist es vielleicht möglich das Du mir die Änderungen machst und zum Download bereitstellst?
 
Back
Top