Shop-Hilfe.com
-


Hinweise


Antwort
 
LinkBack Themen-Optionen Thema durchsuchen Thema bewerten
Alt 24.09.2007, 15:42   #1
TP-Specialist
 
Benutzerbild von Paco
 
Registriert seit: Sep 2001
Ort: Rhein-Main
Paco macht sich hier sehr viel Mühe

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é
Paco ist offline   Mit Zitat antworten


Alt 24.09.2007, 16:51   #2
TP-Moderator
 
Benutzerbild von Rizzo
 
Registriert seit: Aug 2004
Ort: Kaiserslautern
Rizzo lebt für das TP und seine UserRizzo lebt für das TP und seine UserRizzo lebt für das TP und seine UserRizzo lebt für das TP und seine UserRizzo lebt für das TP und seine UserRizzo lebt für das TP und seine UserRizzo lebt für das TP und seine UserRizzo lebt für das TP und seine UserRizzo lebt für das TP und seine User
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.
Rizzo ist offline   Mit Zitat antworten
Alt 24.09.2007, 17:48   #3
TP-Specialist
 
Benutzerbild von Paco
 
Registriert seit: Sep 2001
Ort: Rhein-Main
Paco macht sich hier sehr viel Mühe
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é
Paco ist offline   Mit Zitat antworten
Alt 24.09.2007, 18:12   #4
TP-Greis
 
Benutzerbild von Boris
 
Registriert seit: Mar 2001
Ort: Berlin, Germany
Boris ist ein richtiges Arbeitstier - DANKEBoris ist ein richtiges Arbeitstier - DANKEBoris ist ein richtiges Arbeitstier - DANKEBoris ist ein richtiges Arbeitstier - DANKEBoris ist ein richtiges Arbeitstier - DANKEBoris ist ein richtiges Arbeitstier - DANKE
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
Boris ist offline   Mit Zitat antworten
Alt 25.09.2007, 10:52   #5
TP-Specialist
 
Benutzerbild von Paco
 
Registriert seit: Sep 2001
Ort: Rhein-Main
Paco macht sich hier sehr viel Mühe
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]&amp;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é
Paco ist offline   Mit Zitat antworten
Alt 25.09.2007, 12:09   #6
TP-Greis
 
Benutzerbild von Boris
 
Registriert seit: Mar 2001
Ort: Berlin, Germany
Boris ist ein richtiges Arbeitstier - DANKEBoris ist ein richtiges Arbeitstier - DANKEBoris ist ein richtiges Arbeitstier - DANKEBoris ist ein richtiges Arbeitstier - DANKEBoris ist ein richtiges Arbeitstier - DANKEBoris ist ein richtiges Arbeitstier - DANKE
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
Boris ist offline   Mit Zitat antworten
Alt 25.09.2007, 12:39   #7
TP-Supporter
 
Benutzerbild von Spin
 
Registriert seit: Sep 2002
Ort: Zürich
Spin macht alles soweit korrekt

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
Spin ist offline   Mit Zitat antworten
Alt 25.09.2007, 13:44   #8
TP-Specialist
 
Benutzerbild von Paco
 
Registriert seit: Sep 2001
Ort: Rhein-Main
Paco macht sich hier sehr viel Mühe
Okay, dann hilf mir mal bitte wie ich ansetze und was Sucheindexierung ist?
Paco ist offline   Mit Zitat antworten
Alt 08.10.2007, 14:58   #9
TP-Specialist
 
Benutzerbild von Paco
 
Registriert seit: Sep 2001
Ort: Rhein-Main
Paco macht sich hier sehr viel Mühe
Kann mir jemand sagen was Suchindexierung ist und wie ich da vorgehe oder nachlesen kann? Danke

José
Paco ist offline   Mit Zitat antworten
Alt 08.10.2007, 15:10   #10
TP-Moderator
 
Benutzerbild von Cybergreek
 
Registriert seit: Nov 2005
Ort: Köln
Cybergreek ist ein richtiges Arbeitstier - DANKECybergreek ist ein richtiges Arbeitstier - DANKECybergreek ist ein richtiges Arbeitstier - DANKECybergreek ist ein richtiges Arbeitstier - DANKECybergreek ist ein richtiges Arbeitstier - DANKE
Hier kannst Du schonmal ein bisschen nachlesen, was eine Index ist...
__________________
Grüße vom Griechen,
Cybergreek!

WikiDict.de - Das Wiki-Wörterbuch
Cybergreek ist offline   Mit Zitat antworten
Alt 08.10.2007, 16:31   #11
TP-Specialist
 
Benutzerbild von Paco
 
Registriert seit: Sep 2001
Ort: Rhein-Main
Paco macht sich hier sehr viel Mühe
Okay hab ich - und nun zu Suchindexierung? oder? Wie kann ich da an meiner Struktur etwas verbessern, bzw beschleunigen?
Paco ist offline   Mit Zitat antworten
Alt 08.10.2007, 17:53   #12
Jil
TP-Junior
 
Registriert seit: Oct 2007
Jil ist auf einem guten Weg
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
Jil ist offline   Mit Zitat antworten
Alt 09.10.2007, 16:39   #13
TP-Specialist
 
Benutzerbild von Paco
 
Registriert seit: Sep 2001
Ort: Rhein-Main
Paco macht sich hier sehr viel Mühe
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é
Paco ist offline   Mit Zitat antworten
Alt 09.10.2007, 20:00   #14
Jil
TP-Junior
 
Registriert seit: Oct 2007
Jil ist auf einem guten Weg
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
Jil ist offline   Mit Zitat antworten
Alt 10.10.2007, 12:23   #15
TP-Specialist
 
Benutzerbild von Paco
 
Registriert seit: Sep 2001
Ort: Rhein-Main
Paco macht sich hier sehr viel Mühe
Hi Jil,

danke das du dich meiner Probleme angenommen hast.

Zitat:
Zitat von Jil Beitrag anzeigen
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 Beitrag anzeigen
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é
Paco ist offline   Mit Zitat antworten
Antwort

  Aktuelles Thema
  TP Hilfe Forum > Web-Editoren & Coding > Traum-Dynamik
MYSQL/Datenbankaufruf beschleunigen? MYSQL/Datenbankaufruf beschleunigen?
« Script läuft nur auf Startseite? | Valider WYSIWYG-Editor für XHTML-CMS gesucht »

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Thema bewerten
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.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 04:34 Uhr.

Powered by: vBulletin Version 3.7 (Deutsch)
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd. / Search Engine Friendly URLs by vBSEO 3.2.0 ©2008, Crawlability, Inc.
Traum-Projekt.com | Suchen | Archiv | Impressum | Kontakt | | | Nach oben |



1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67