| (Web-) Design und webbasierte Sprachen Tipps & Tricks, Designabgleich, HTML & Javascript, Flash, ASP, PHP, Perl/CGI... |
Diskussion: Langsammen Query überarbeiten im Forum (Web-) Design und webbasierte Sprachen, in der Kategorie Web, Network & Multimedia Palace; Anzeige heyho, ich hab ein kleines spiel laufen, wo man sich durch klicks sessions unterschiedlicher länge sichern kann. man muss ...
![]() |
| | #1 (permalink) |
| Member of Honour ![]() | Langsammen Query überarbeiten Anzeige heyho, ich hab ein kleines spiel laufen, wo man sich durch klicks sessions unterschiedlicher länge sichern kann. man muss sozusagen zeitspannen sammeln und diese werden zu statistiken aufaddiert. ich hab jetzt eine tabelle wo alle zeitspannen eingetragen sind. dabei gehts vorallem um die spalten: Code: user_id int(10) time int(10) time_before int(10) time_diff int(10) allerdings möchte ich gerne noch die durchschnittszeiten für den benutzer haben. der komplette query sieht so aus: Code: SELECT
user.user,user.time_sum,max(resets.time) as last,
(SELECT
AVG(time_diff)
FROM
resets
WHERE
user_id = user.id
AND
added = 1
) as avg
FROM
resets
INNER JOIN
user
ON
resets.user_id = user.id
GROUP BY
user.id
ORDER BY
time_sum
DESC wie bekomm ich jetzt nen durchschnittswert effizienter berechnet. mein plan war, dass ich die avg() bei jedem klick bilde, aber das braucht ja dann auch wieder viel performance, ich glaube da erhalt ich keinen großen vorteil. jemand hinweise, wie man sowas optimieren kann?
__________________ » Flattr mich! - Wenn dir mein Beitrag geholfen hat! « <| 2 AMD Opterons 2384@ 8x3,2ghz | Tyan S2915 | 10GB | 2x 8800GT | 8400GS | Dell 3008WFP + 2x2007FP |> |
| | |
| | #2 (permalink) |
| Moderator ![]() Registriert seit: 20.07.05 ![]() ![]() ![]() ![]() ![]() ![]() Likes: 202 | Hm, was spricht dagegen, direkt AVG zu verwenden? SELECT user.user,AVG(resets.time_diff) FROM resets INNER JOIN ....
__________________ Noch mal, für alle Pseudo-Geeks: 1+1=0. -> 10 wäre Überlauf! Selig, wer nichts zu sagen hat und trotzdem schweigt. |
| | |
| HaBOT | - Anzeige - |
| |
| | #3 (permalink) |
| Member of Honour ![]() | weil ich ja nen select über die 200 benutzer starte um die "bestenliste" zu bekommen. für nen einzelnen benutzer mach ich das so wie du es vorgeschlagen hast. ich brauch in dem select aber von jedem der 200 benutzer den avg(). das macht das ganze ja auch so langsam, 200 mal über 13k datensätze nen selektiven avarage berechnen.
__________________ » Flattr mich! - Wenn dir mein Beitrag geholfen hat! « <| 2 AMD Opterons 2384@ 8x3,2ghz | Tyan S2915 | 10GB | 2x 8800GT | 8400GS | Dell 3008WFP + 2x2007FP |> |
| | |
| | #4 (permalink) |
| Moderator ![]() Registriert seit: 20.07.05 ![]() ![]() ![]() ![]() ![]() ![]() Likes: 202 | Naja, da Du die User gruppierst, gilt die Aggregatfunktion nur für die Gruppe http://www.oreilly.de/catalog/sqlnut...pter/ch04.html Code: Die folgende Abfrage berechnet durchschnittliche Verkaufszahlen für das laufende Jahr für jeden Buchtyp: SELECT type, AVG( ytd_sales ) AS "average_ytd_sales" FROM titles GROUP BY type; Bsp2: Tabelle: http://sqlcourse2.com/items_ordered.html In der Tabelle sind also alle Bestellungen samt Preis und Userids (wie eben bie Dir nach dem join die userids samt Zeiten stehen sollten). Anfrage um die Durschschnittsausgabe der einzelnen User pro Bestellung herauszufinden: http://sqlcourse2.com/cgi-bin/sqlcmd...merid%3B%0D%0A Edit: musst eventuell noch die "AND added=1" Bedingung in den Join verlagern (k.A wofür sie dient
__________________ Noch mal, für alle Pseudo-Geeks: 1+1=0. -> 10 wäre Überlauf! Selig, wer nichts zu sagen hat und trotzdem schweigt. |
| | |
| | #5 (permalink) |
| Member of Honour ![]() | ah, jetzt versteh ich wie du das meinst. ja, das added=1 gibt mir nur gültige zurück (es wird unterschieden, ob gültig -> in die wertung mit aufgenommen, oder ungültig). kann man where clauseln in die jointanweisungen mit reinnehmen? in der tat, das ist mal gut zu wissen klappt super und ist deutlich schneller: Code: alt: 221 total query took 1.7752 neu: 219 Total, Query took 0.0493
__________________ » Flattr mich! - Wenn dir mein Beitrag geholfen hat! « <| 2 AMD Opterons 2384@ 8x3,2ghz | Tyan S2915 | 10GB | 2x 8800GT | 8400GS | Dell 3008WFP + 2x2007FP |> |
| | |
![]() |
| - Anzeige - | |
| |
| Themen-Optionen | |
| Ansicht | |
| |
Ähnliche Themen | ||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| hilfe bei query optimierung | easteregg | (Web-) Design und webbasierte Sprachen | 2 | 08.07.09 20:15 |
| SQL: Query gesucht | boehmi | Code Kitchen | 5 | 05.05.09 20:56 |
| Wie bekomme ich dieses SQL-query hin? | jesus | Code Kitchen | 1 | 19.02.07 11:49 |