Dies ist eher eine Frage als ein Problem, das ich lösen muss. Mein Backend ist schnell und meine Abfragen laufen großartig, so dass es nicht ist, dass wichtig ist. Okay, aber lasst uns anfangen.MySQL: Wie man mehrere "Statistiken" in einer einzigen Abfrage abfragt?
Ich habe 4 Panels Statistiken auf meinem Dashboard in Bezug auf die Anzahl der Ansichten von heute, gestern, diese Woche und diesen Monat; jede nimmt eine Abfrage in meiner Datenbank auf. Was ich gefragt habe, ist, wie würde man alle diese Abfragen zusammensetzen, um die Belastung der Datenbank/Server zu erleichtern?
ich durch Stackoverflow suchen, bevor er fragte und sah einen etwas sagen wie:
SUM(case when status = 'open' then 1 else 0 end) as [Open],
SUM(case when status = 'closed' then 1 else 0 end) as [Closed]
Quelle: Gathering multiple statistics about a table in a single query
Welche, was ich brauche, könnte so etwas sein könnte:
SUM(case when DATE(created_at) = '2015-07-23' then 1 else 0 end) as today,
SUM(case when DATE(created_at) = '2015-07-22' then 1 else 0 end) as yesterday,
SUM(case when WEEK(created_at) = '29' then 1 else 0 end) as week,
SUM(case when MONTH(created_at) = '7' then 1 else 0 end) as month
Ich habe mich nur gefragt, ob jemand etwas bessere Vorschläge hat, wie ich dies auf meine f angewendet habe Salbung und es funktioniert gut.
Während diese Dinge mit der Last auf Ihrem Server helfen könnten, könnten sie es auch behindern, wenn die Abfragen am Ende zu kompliziert werden; Es hängt wirklich von den benötigten Daten ab und davon, wie leistungsfähig der Server ist. – Uueerdo
Sie können die Werte zwischenspeichern und den Cache bei Bedarf ungültig machen. Ein anderer Ansatz könnte etwas wie Trigger verwenden und die tatsächlichen Messungen beibehalten, anstatt sie zu berechnen. Vor- und Nachteile für jeden. Wie auch immer, die sich langsam ändernden zeitlichen Dimensionen deuten darauf hin, dass etwas in einem gegebenen Intervall zwischengespeichert wird. – ficuscr
Danke! Das macht großen Sinn. Ich werde beide Ansätze ausprobieren und vielleicht sehen, wie sie sich im Laufe der Zeit entwickeln, wenn ich mehr Daten bekomme. Ich werde versuchen, sie zu cachen, ich werde sowieso keine Echtzeit-Updates brauchen, also könntest du es auch versuchen :-) –