MySQL DB からデータを取得する PHP アプリケーションがあります。PHP が DB にクエリを実行すると、結果が取得され、すべての出力行が画面に出力されますが、上部にはグラフも出力され、出力行が視覚化されます。次のように (これは 24 の縦線の棒グラフです。これは、MySQL が PHP に代わって実行されたクエリから 24 行の出力を生成したためです)。
ユーザーが多くの結果を生成するクエリを実行すると、私が直面する問題が発生します。下の 2 番目の図は、PHP アプリケーションでさまざまな選択可能なパラメーターを使用して PHP に代わってクエリを実行したときに MySQL が生成した 150 の結果を視覚的に表したものです。垂直線の最大数が必要です(たとえば、50としましょう)。クエリが 50 行を超える場合、MySQL の結果を視覚化のために 50 行に統合します。ユーザーが必要に応じて任意の結果を見ることができるように、グラフの下にすべての行を出力します。私の質問は、コードを理解して従うのが難しくなく、CPU サイクルに関してこれを行う最適な方法は何ですか?
私が持っていた 1 つのアイデアは、PHP アプリケーションでこれに取り組むことです。ここでは、MySQL 出力の行数を 50 で割るだけです (ここでも、簡単な数字を想定してみましょう。丸めは、このインスタンスで作業する簡単な問題です)。MySQL が 500 行を生成する場合、500 を 50 で割ると 10 になるので、10 行ごとに棒グラフに垂直線を引きます。
もう 1 つのアイデアは、MySQL でこの問題に取り組むことです。おそらくMySQLクエリを実行し、結果を変数にコピーしてから、10行ごとに選択するクエリに対して2番目のクエリを実行するか、MySQL内で統合する方法がある場合は、2番目の小さなデータセットを提示しますPHPに。
この問題に取り組むのに最適な場所はどこで、その理由と方法は?
更新:
もう少し説明するように要求されたように、それは本当に非常に基本的なシナリオです:
結果は次のようになります。各行は整数値とタイム スタンプです (棒グラフは期間 [X 軸] に対する値 [Y 軸] を示します)。
row | value | timestamp
1 | 10 | 1234-01-01 10:30
2 | 10 | 1234-01-01 10:35
3 | 15 | 1234-01-01 10:40
4 | 15 | 1234-01-01 10:45
5 | 10 | 1234-01-01 10:50
MySQL が 150 行の出力を生成すると、上の 2 番目のグラフのような結果が得られます。クエリが 300 の結果または例を生成する場合、棒グラフの線は非常に細いためにほとんど見えないため、統合機能を作成しようとしています。これは、不要なレベルの視覚的な粒度になります。