 |
| Hinweise |
Willkommen im TP-Hilfe-Forum!Dies ist ein Forum zu den Themen Photoshop, Dreamweaver, Flash, Selbständigkeit und mehr, in dem Du Hilfe, Anleitung oder eine Lösung zu Deinen Problemen erhältst. Aktuell bist Du in unseren Foren als Gast mit reinen Leserechten unterwegs. Wenn Du Dich registrierst, kannst Du eigene Themen verfassen, Deine Frage stellen und privat mit anderen TPlern kommunizieren. Weitere Foren werden zugänglich, und Du wirst – falls gewünscht – per Mail über neue Beiträge informiert. Die Registrierung ist schnell und kostenlos. Sollten bei der Registrierung Fragen auftauchen, reicht ein Klick in unsere Hilfe - Häufig gestellte Fragen oder eine kurze Mitteilung an das Support-Team. Viel Spaß bei Traum-Projekt.com |
24.09.2007, 15:42
|
#1
|
|
TP-Specialist
Registriert seit: Sep 2001
Ort: Rhein-Main
|
MYSQL/Datenbankaufruf beschleunigen?
Hallo,
eine Frage eines Mysql-Neuling:
Ich habe insgesamt 1637 Datenzeilen (1 Zeile umfaßt ca. 10 Spalten) in meiner Datenbak abgelegt. Wenn ich diese auf meiner Webseite alle aufeinmal aufrufe, braucht es ca. 6 sec. bis alle Daten auf den Schirm erscheinen! Kann man das irgendwie beschleunigen oder muß man das in kauf nehmen?
Danke für Eure hilfe.
Grüße José
|
|
|
24.09.2007, 16:51
|
#2
|
|
TP-Moderator
Registriert seit: Aug 2004
Ort: Kaiserslautern
|
Hallo Paco
Stellt sich doch die Frage ob Du auch wirklich alle 1637 Datensätze auf einmal brauchst. Eventuell brauchst Du auch nicht alle Felder bei der Abfrage oder kannst die Abfrage einschränken mit einer Where-Klausel. Unter Umständen macht es auch Sinn die Abfrage auf mehrere Seiten aufzuteilen (Paging).
Das kann man alles nicht so pauschal sagen, weil wir nicht wissen um was für Daten es sich handelt, wie die Abfragen aussehen, für was sie gebraucht werden usw. Nur eins dürfte ziemlich sicher sein, kein Mensch wird 1637 Datensätze auf einmal lesen wollen/müssen, von daher macht es auch wenig Sinn so viele DS aus der DB zu holen. 
__________________
#.Viele Grüße, Andreas
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
|
|
|
24.09.2007, 17:48
|
#3
|
|
TP-Specialist
Registriert seit: Sep 2001
Ort: Rhein-Main
|
Hi Rizzo,
mag sein, das du nicht ganz unrecht hast!
Ich habe schon verschiedene einzelne Abfragen auf die komplette Datenbank, auch Paging. Die Anwortzeiten sind passabel. Aber ich habe auch eine Abfrage für mich im Admin die alle Daten ausspuckt.
Deshalb nur die Frage ob es schneller geht oder nicht?
Wenn ja, könnte ich es ausprobieren und anwenden, wenn nein, naja dann habe ich Pech.
Ich frage ja auch für die Zukunft wenn ich mal 10fach soviele Daten haben sollte?! Vorhut halt!  Besser als Nach(t)sicht...
Danke und Gruß José
|
|
|
24.09.2007, 18:12
|
#4
|
|
TP-Greis
Registriert seit: Mar 2001
Ort: Berlin, Germany
|
Zitat:
|
Deshalb nur die Frage ob es schneller geht oder nicht?
|
Es wird eher nicht so "langsam" sein, weil der MySQL Server nicht so schnell ist, sondern vielmehr, weil der Browser die erzeugte Seite erstmal laden und aufbauen muss - zumindest wenn Du alle Daten in einer Tabelle darstellst.
Ansonsten - wie sieht deine Query überhaupt aus? 
__________________
“My software never has bugs. It just develops random features ...”
» DevShack - die Website des freien Webentwicklers Boris
|
|
|
25.09.2007, 10:52
|
#5
|
|
TP-Specialist
Registriert seit: Sep 2001
Ort: Rhein-Main
|
Hier mein Query:
PHP-Code:
$ergebnis = mysql_query ( "SELECT * FROM ebay WHERE bezeichnung LIKE '%$such%' OR firma LIKE '%$such%' OR id LIKE '%$such%' OR datum LIKE '%$such%' OR land LIKE '%$such%' OR preis LIKE '%$such%' OR b LIKE '%$such%' OR m LIKE '%$such%' OR id LIKE '%$such%' OR gebote LIKE '%$such%' OR bild LIKE '%$such%' OR psu LIKE '%$such%' OR power LIKE '%$such%' OR figuren LIKE '%$such%' OR aa LIKE '%$such%' " );
echo "<table>\n";
echo "<tr>\n";
echo "<td class=\"td\">ID</td><td class=\"td\">Firma</td><td class=\"td\">Bezeichnung</td><td class=\"td\">Datum</td><td class=\"td\">Land</td><td class=\"td\">Gb</td><td class=\"td\">B</td><td class=\"td\">M</td><td class=\"td\">Fi.</td><td class=\"td\">PW</td><td class=\"td\">PSU</td><td class=\"td\">AA</td><td class=\"td\" style=\"text-align:right\"><b>Euro</b></td>\n";
echo "</tr>\n";
while ( $daten = mysql_fetch_array( $ergebnis))
{
printf ("<tr bgcolor='%s'><td>$daten[id]</td><td>$daten[firma]</td><td><a class=\"datenbank\" href=\"index.php?id_des_datensatzes=$daten[id]&mod=suche_gesamt\" onfocus=\"this.blur()\">$daten[bezeichnung]</a></td><td>".DatumsWandler($daten[datum])."</td><td>$daten[land]</td><td>$daten[gebote]</td><td align=\"center\">$daten[b]</td><td align=\"center\">$daten[m]</td><td align=\"center\">$daten[figuren]</td><td align=\"center\">$daten[power]</td><td align=\"center\">$daten[psu]</td><td align=\"center\">$daten[aa]</td><td class=\"preis\"><b>".eurowandler($daten[preis])."</b></td></tr>\n", bgcolor(1));
}
echo "</table>\n";
echo "</p>\n";
Wenn es Dir/euch weiterhilft - gerne....
Tja, Boris, schon lange nichts mehr gehört oder....was macht das Tanzen?
Gruß José
|
|
|
25.09.2007, 12:09
|
#6
|
|
TP-Greis
Registriert seit: Mar 2001
Ort: Berlin, Germany
|
Ui, das ist keine gute, performante Query. Zunächst wählst du immer alles mit * aus - besser wären die Feldnamen, selbst wenn du alle Daten haben willst.
Doch die massigen Verknüpfungen mit OR und LIKE ziehen die Geschwindigkeit gewaltig herunter. Da solltest du besser mal ansetzen (Suchindexierung  ).
__________________
“My software never has bugs. It just develops random features ...”
» DevShack - die Website des freien Webentwicklers Boris
|
|
|
25.09.2007, 12:39
|
#7
|
|
TP-Supporter
Registriert seit: Sep 2002
Ort: Zürich
|
MYSQL Performance
Was manchmal auch noch Performance liefert, wenn du in all deinen DB's den Index und Primary Key logisch und richtig setzt.
Aber dein Query mit den vielen LIKE's wird sicher das primäre Problem sein das an der Performance schraubt.
Gruss: Spin
|
|
|
25.09.2007, 13:44
|
#8
|
|
TP-Specialist
Registriert seit: Sep 2001
Ort: Rhein-Main
|
Okay, dann hilf mir mal bitte wie ich ansetze und was Sucheindexierung ist? 
|
|
|
08.10.2007, 14:58
|
#9
|
|
TP-Specialist
Registriert seit: Sep 2001
Ort: Rhein-Main
|
Kann mir jemand sagen was Suchindexierung ist und wie ich da vorgehe oder nachlesen kann? Danke
José
|
|
|
08.10.2007, 15:10
|
#10
|
|
TP-Moderator
Registriert seit: Nov 2005
Ort: Köln
|
Hier kannst Du schonmal ein bisschen nachlesen, was eine Index ist...
|
|
|
08.10.2007, 16:31
|
#11
|
|
TP-Specialist
Registriert seit: Sep 2001
Ort: Rhein-Main
|
Okay hab ich - und nun zu Suchindexierung? oder? Wie kann ich da an meiner Struktur etwas verbessern, bzw beschleunigen?
|
|
|
08.10.2007, 17:53
|
#12
|
|
TP-Junior
Registriert seit: Oct 2007
|
Hallo José,
mach erstmal einen kleinen Test: Lass die Seite fertig laden, speichere diese dann als HTML-Dokument auf dem lokalen Rechner, schiebe es auf den Server und rufe es von da auf. Wie lange dauert es diesmal?
Gruß Jil
|
|
|
09.10.2007, 16:39
|
#13
|
|
TP-Specialist
Registriert seit: Sep 2001
Ort: Rhein-Main
|
Hi Jil,
also normal dauert es so ca. 6 sec.. Wenn ich lokal abrufe, ca. 2 sec. und wenn ich es als html auf den Server aufrufe ca. 3sec.
So, nun sag mir was der test mir sagt
Gruß José
|
|
|
09.10.2007, 20:00
|
#14
|
|
TP-Junior
Registriert seit: Oct 2007
|
O.K., du sollst dir nur die Frage stellen, ob dir diese 2 bis 3 Sekunden weniger, die du bestenfalls erreichen würdest, es wert sind, eine Optimierung zu machen. Offensichtlich hast du auch nicht viel Erfahrung mit Grundlegendem.
Zur Indexierung in deinem Fall (einfachstes Szenario): Es wird eine zusätzliche Index-Spalte für die Tabelle gemacht, die den Wert beinhaltet, der aussagt, ob ein Datensatz für deine Anfrage in Frage kommt oder nicht. So werden die mehrfachen LIKEs vermieden und man sucht nur in dieser Index-Spalte nach dem gewünschten Wert. Bei jedem Einfügen oder Ändern eines Datensatzes müsste dieser Index-Wert allerdings angepasst werden.
Gruß Jil
|
|
|
10.10.2007, 12:23
|
#15
|
|
TP-Specialist
Registriert seit: Sep 2001
Ort: Rhein-Main
|
Hi Jil,
danke das du dich meiner Probleme angenommen hast.
Zitat:
Zitat von Jil
O.K., du sollst dir nur die Frage stellen, ob dir diese 2 bis 3 Sekunden weniger, die du bestenfalls erreichen würdest, es wert sind, eine Optimierung zu machen. Offensichtlich hast du auch nicht viel Erfahrung mit Grundlegendem.
|
Stimmt, ich habe nicht viel Erfahrung damit. Aber die zeit wäre es mir wert, denn die Menge meiner Datensätze steigt stetig und schon bald ist der Unterschied nicht nur 2-3 Sekunden, sondern schon wesentlich mehr...
Zitat:
Zitat von Jil
Zur Indexierung in deinem Fall (einfachstes Szenario): Es wird eine zusätzliche Index-Spalte für die Tabelle gemacht, die den Wert beinhaltet, der aussagt, ob ein Datensatz für deine Anfrage in Frage kommt oder nicht. So werden die mehrfachen LIKEs vermieden und man sucht nur in dieser Index-Spalte nach dem gewünschten Wert. Bei jedem Einfügen oder Ändern eines Datensatzes müsste dieser Index-Wert allerdings angepasst werden.
Gruß Jil
|
Hmm, noch kann ich mir gar nicht so recht vorstellen wie das auszusehen hat oder funktioniert. Kannst du mal ein beispiel geben?
Grüße José
|
|
|
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
|
| Themen-Optionen |
Thema durchsuchen |
|
|
|
| Thema bewerten |
|
|
Forumregeln
|
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
Alle Zeitangaben in WEZ +2. Es ist jetzt 04:34 Uhr.
|
 |