MySQL Arbeitszeit "stoppen"

  • Themenstarter Themenstarter ByeBye 8492
  • Beginndatum Beginndatum
B

ByeBye 8492

Moinsen,

ich habe bereits eine Methode um die Renderzeit der Seite zu errechnen. Diese will ich aber nun noch durch die Zeit ergänzen die MySQL gebraucht hat um alle Queries auszuführen :). Das muss doch irgendwie klappen oder?

Muffin

Aso, gerade nochma was gechecked:
Ich habe eine Tabelle inhalt, dort sind 27000 Datensätze drinne gespeichert ^^. Wenn ich nun den Query:

SELECT c_cont.id, c_cont.parent_id,c_cont.rate, c_cont.rated, c_user.name as `author`, c_user.id as `user_id`,c_cont.title, c_cont.text,c_cont.time,c_cont.text,c_cont.rate, c_cont.counter,c_cont.show_author from inhalt as c_cont LEFT JOIN user as c_user ON ( c_user.id = c_cont.author) where c_cont.frontpage = 1 and c_cont.allowed = 1 and (c_cont.showtime <= '1108755445') GROUP BY c_cont.id ORDER BY c_cont.time DESC LIMIT 5

durchlaufen lasse, dann durchsucht er alle 27000 Datensätze, obwohl er doch nur 5 nehmen soll ..., dass heisst das er für diesen Simplen Query 3 Sekunden brauch, meiner Meinung nach wesentlich zuviel. Wie kann man das optimieren? EXPLAIN sagt das er 27000 Datensätze durchsucht ...

EDIT: Wenn ich das Group by Wegnehme brauch er nur noch 0,25 Sekunden, is aber trotzdem noch zu lange :(
EDIT2: Wenn ich nun noch das ORDER BY rausnehme, dann is der Query in 0.0016 Sekunden fertig .. aber die Datensätze nichmehr ordentlich sortiert :(.
 
Zuletzt bearbeitet von einem Moderator:
Was soll MYSQL machen :(
Wenn du von 27000 sortierten Datensätzen die ersten 5 haben willst, muss es alle durchlaufen, um die Reihenfolge zu bestimmen.

Wenn sich die Datensätze nicht so oft ändern, könntest du bei jeder Änderung die Tabelle komplett sortieren, ... das würde dir das ORDER BY sparen.
 
Sven Mintel hat gesagt.:
Was soll MYSQL machen :(
Wenn du von 27000 sortierten Datensätzen die ersten 5 haben willst, muss es alle durchlaufen, um die Reihenfolge zu bestimmen.

Wenn sich die Datensätze nicht so oft ändern, könntest du bei jeder Änderung die Tabelle komplett sortieren, ... das würde dir das ORDER BY sparen.

Ansich ändern sich die Datensätze nur wenn man Inhalt hinzufügt.
Quasi bei einer stark besuchten Seite doch recht oft :(.

Nunja, dann muss ich mir noch ne andere Methode überlegen.

Wie gibt phpMyAdmin eigentlich aus, wie lange es für den Query gebraucht hat?
Da muss es doch nen Befehl geben, wenn man diese dann quasi zusammenaddiert hat man ja die MySql Zeit, oder nicht?
 
Das wird genauso berechnet, wie du die Erstellungszeit der Seite berechnest. Hierfür gibt es genügend Beispiele.
Mich würde aber mal dein Code interessieren, wie du die Renderzeit der Seite berechnest, das ist ja immerhin client- und verbindungsabhängig.
 
Timbonet hat gesagt.:
Das wird genauso berechnet, wie du die Erstellungszeit der Seite berechnest. Hierfür gibt es genügend Beispiele.
Mich würde aber mal dein Code interessieren, wie du die Renderzeit der Seite berechnest, das ist ja immerhin client- und verbindungsabhängig.

Nunja ich starte oben ne Stoppuhr und unten stoppe ich diese wieder, vereinfacht gesagt, ist halt die Renderzeit die PHP brauch.

Hat MySQL kein Kommando zum anzeigen der benötigten Zeit?

Nungut, so wichtig isses auch nich, wäre halt recht net gewesen :).
 
Muffinmampfer hat gesagt.:
Nunja ich starte oben ne Stoppuhr und unten stoppe ich diese wieder, vereinfacht gesagt, ist halt die Renderzeit die PHP brauch.

Da PHP nichts rendert, kannst du auch keine Renderzeit bestimmen, was du machst, ist die Bearbeitungszeit für das Script bestimmen. Renderzeit wäre zum Beispiel die Zeit, die der Client zur Darstellung der Daten auf dem Ausgabegerät benötigt.
Meines Wissens bietet MySQL keinen solchen Befehl, du kannst aber gerne in der MySQL-Sprachreferenz noch einmal danach schauen.
 
Zurück