HanZ
Bekannter NGBler
- Registriert
- 16 Juli 2013
- Beiträge
- 1.061
Hallo,
ich habe eine Webseite, die beim Absenden eines Formulars eine Datenbankabfrage macht und das Ergebnis direkt auf der Webseite dann darstellt. Man kann nach bestimmten Kriterien filtern. Bei einer Abfrage nach dem kompletten Inhalt benötigt die Webseite ca. 7 Sekunden, bei einer Abfrage mit nur wenigen Ergebnissen ist das Ergebnis sofort da.
Ich bin bisher davon ausgegangen, dass einfach der Datenbestand zu groß ist (ca 3300 Einträge), die alle mit Einträgen aus einer 60.000 Inhalten umfassenden Tabelle verknüpft werden. Wenn ich aber die SQL-Abfrage direkt in der Konsole ausführe, dauert es nur 0.01 Sekunden
Es gibt 2 Tabelle:
- haupt
- merkmale
In "haupt" sind ca. 3300 Datensätze mit je grob 10 Spalten. Jeder einzelne Eintrag dort wird mit ca. 10 - 30 Datensätzen aus der Tabelle "merkmale" verknüpft (anhand der ID). Die Abfrage dazu lautet ca. so:
Mit PHP frage ich das wie folgt ab:
Die Tatsache, dass die Abfrage auf der Konsole so schnell geht, lässt mich vermuten, dass die lange Wartezeit an was anderem liegt, vermutlich PHP?
Auch direkt im Netzwerk auf dem Server (192..../website) geht es nicht schneller.
Am Ende der Abfrage wird aus dem in PHP gefüllten Array jeder Eintrag (foreach Schleife) mit 'echo' auf die Webseite in eine <table> geschrieben.
Wie gehe ich hier denn vor, um am besten rauszufinden, wieso die Abfrage so lange dauert? Oder hat schon jemand direkt eine Idee?
LG
HanZ
ich habe eine Webseite, die beim Absenden eines Formulars eine Datenbankabfrage macht und das Ergebnis direkt auf der Webseite dann darstellt. Man kann nach bestimmten Kriterien filtern. Bei einer Abfrage nach dem kompletten Inhalt benötigt die Webseite ca. 7 Sekunden, bei einer Abfrage mit nur wenigen Ergebnissen ist das Ergebnis sofort da.
Ich bin bisher davon ausgegangen, dass einfach der Datenbestand zu groß ist (ca 3300 Einträge), die alle mit Einträgen aus einer 60.000 Inhalten umfassenden Tabelle verknüpft werden. Wenn ich aber die SQL-Abfrage direkt in der Konsole ausführe, dauert es nur 0.01 Sekunden
Es gibt 2 Tabelle:
- haupt
- merkmale
In "haupt" sind ca. 3300 Datensätze mit je grob 10 Spalten. Jeder einzelne Eintrag dort wird mit ca. 10 - 30 Datensätzen aus der Tabelle "merkmale" verknüpft (anhand der ID). Die Abfrage dazu lautet ca. so:
Code:
SELECT ID, abc, cde, fgh, (...), Group_Concat(merkmale SEPARATOR ', ' ) AS merkmale FROM haupt, merkmale WHERE haupt.ID=merkmale.ID GROUP BY haupt.ID;
Mit PHP frage ich das wie folgt ab:
Code:
try
{
$db = new PDO(...);
}
catch(PDOException $e)
{
throw new Exception($e->getMessage());
}
Die Tatsache, dass die Abfrage auf der Konsole so schnell geht, lässt mich vermuten, dass die lange Wartezeit an was anderem liegt, vermutlich PHP?
Auch direkt im Netzwerk auf dem Server (192..../website) geht es nicht schneller.
Am Ende der Abfrage wird aus dem in PHP gefüllten Array jeder Eintrag (foreach Schleife) mit 'echo' auf die Webseite in eine <table> geschrieben.
Wie gehe ich hier denn vor, um am besten rauszufinden, wieso die Abfrage so lange dauert? Oder hat schon jemand direkt eine Idee?
LG
HanZ
Zuletzt bearbeitet: