2016-08-02 5 views
0

Ich habe eine große SQL-Tabelle mit Benutzer historischen Daten etwas wie folgt aus:große SQL-Tabelle - wählen Sie alle zeigen aber zeigen progressiv mit JavaScript/PHP

ID Name  Units  Company  Benefit Date 
1  John  1.5  Example A 300$  1/1/2016 
2  Paul  2.12  Example B 600$  1/2/2016 
3  Mike  3.21  Example A 250$  1/3/2016 
... 

Ich brauche alle Daten zu laden einige komplexe calcs zu machen: yield, total, by company ...

Und dann muss ich alle Daten in der Tabelle anzeigen, aber ich möchte dazu progressiv wie unendliche Scroll, Paginierung oder Ajax laden. Aber ich kann SQL LIMIT nicht machen, weil ich zuerst alle Daten laden muss.

wird die Lösung 2-Abfragen machen werden: so etwas wie dieses mit allen Daten, dann eines mit LIMIT

Die Seite, die ich endlich brauchen, ist:

**Hi John,** 

Your total benefit is: 2043$ 
Your total yield is: 2% 
Your total units by day: 1.25 
... 

**Historical data** 

1/1/2016 - Example A - 1.5 units - 100$ benefit 
2/1/2016 - Example B - 2.5 units - 200$ benefit 
3/1/2016 - Example A - 3.5 units - 30$ benefit 
4/1/2016 - Example C - 1.25 units - 500$ benefit 
5/1/2016 - Example A - 1.5 units - 3$ benefit 
6/1/2016 - Example A - 2.5 units - 5.4$ benefit 

PREV PAGE - NEXT PAGE 

Was ist der beste Weg?

Antwort

4

Haben Sie keine Angst, mehrere Abfragen zu verwenden. Ich habe das Gefühl, dass Sie dies auf einmal machen wollen, nicht. Sie können es für diese Situation arbeiten, aber es wird schwierig sein, zu erhalten. Ja, Sie sollten versuchen, Ihre Anfragen auf ein Minimum zu beschränken, aber nicht überoptimieren.

Zuerst berechnen Sie Ihre Durchschnittswerte und Ihre Summen und geben diese sofort zurück. Dies gibt Ihnen Ihre erste Statistik. Dann haben Sie die ersten X-Elemente angezeigt, ich schlage vor, Sie nicht AJAX entweder, aber das tun, wenn Sie diese Seite erstellen. Dies ist eine weitere Abfrage. Danach können Sie Ihr LIMIT frei in einem AJAX-Call verwenden, um Ihre nächste/vorherige Version anzuzeigen.

Durch Aufteilen der Abfragen können Sie Ihre AVG/SUM-Abfrage Ihren Anforderungen entsprechend optimieren und Ihre einfache Zeilenabfrage optimieren. Dies könnte sogar eine Verbesserung Ihrer aktuellen Leistung sein.

+0

stimme ich absolut zu. Die Aggregation (Summen und Mittelwerte) kann und sollte in der Datenbank mit einer zusätzlichen Abfrage durchgeführt werden. Dies reduziert auch die Daten, die von der Datenbank an Ihr Skript gesendet werden müssen. Also ... eine Aggregationsabfrage (Mittelwerte, Summen) wie Martijn beschreibt, dann Ihre Limitabfrage, wo Sie die tatsächlichen Einträge anzeigen. – Jakumi

Verwandte Themen