2016-08-02 14 views
0

を示し、このようなものすべてを選択したが、次第に示しています。私はいくつかの複雑なCALCSを作るために、すべてのデータをロードする必要が大規模なSQLテーブル - 私は、ユーザの履歴データを持つ大規模なSQLテーブルを持っているの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 
... 

を:すべてのデータをテーブルに表示する必要がありますが、無限のスクロール、ページネーション、またはAjaxのロードのように、徐々にこのようにしたいと考えています。しかし、すべてのデータを最初にロードする必要があるため、SQL LIMITを作成することはできません。最良の方法は何

**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 

:私は最終的に必要とするページが、このようなものであるLIMIT

との1、その後、すべてのデータを1:

ソリューションは、2つのクエリを作るのだろうか?

答えて

4

複数のクエリを使用することを怖がらないでください。私はあなたがこのすべてを一度にやりたいと思う気持ちをしています。このような状況に遭遇する可能性がありますが、維持するのは難しいでしょう。はい、クエリを最小限に抑えるようにするべきですが、過度に最適化しないでください。

まず、平均と合計を計算し、それを即時に返します。これにより、最初の統計が得られます。それから、最初のX項目が表示されていますが、AJAXを使用しないことをお勧めします。これは別のクエリです。その後、AJAXコールであなたのLIMITを自由に使用して、次の/前のものを表示することができます。

クエリを分割することで、AVG/SUMクエリをニーズに合わせて最適化し、プレーンラインクエリを最適化できます。これはあなたの現在のパフォーマンスを改善することさえあります。

+0

私は絶対に同意します。集計(合計と平均)は、追加のクエリでデータベース内で行うことができます。これにより、データベースからスクリプトに送信する必要があるデータも削減されます。だから... Martijnが説明しているように集計クエリ(平均、合計)を1つ作成し、実際のエントリを表示する制限クエリを実行します。 – Jakumi

関連する問題