2017-09-19 4 views
0
のための多くのデータベースの行を合計し、最適なソリューション/設計開発

問題:私は私が持っているレポートエンジン

(ミツバチは、ここだけの例です)ファームが検出されたどのように多くのミツバチに関するデータを表示するレポートエンジンを開発しています毎分、ファームで検出されたミツバチの数をカウントする100個のデバイス。だから、特定の週の行の数十万人が存在することができる

enter image description here

:ここでDBがどのように見えるかです。

農業従事者は、特定の日に毎時何匹のミツバチが出現したかを示すレポートが必要です。

  1. サーバーは、その日のすべての行をDBから取り除き、それをフィルタリングします。サーバーはこれを行うために大量のメモリを使用しており、これはブルートフォース解決策だと感じます。

  2. 一時的に作成されたテーブルを返すストアドプロシージャがあり、各デバイスで収集されたハチの量が1時間ごとに集計されます。サーバーはこの表を取り、100,000行を処理する必要はありません。

enter image description here

このリターン(24×100)行。しかし、それは私が〜これを行うには予想よりもはるかに長い時間がかかり統合し、(データだけの日を合計する30秒を取ることなく、このデータを合計することができソリューションを開発するためのいくつかの良い候補解は何

enter image description here

どこの日に分けて価値のある月が必要なのでしょうか?)

答えて

1

ここでパフォーマンスが最重要事項である場合は、おそらくデータベースで直接行うことができます。私はtime_collected_beesにテーブルをインデックスしようとするので、100Kラインまで高速にフィルタリングできます。私はデータベースが関連するエントリを見つけるためにテーブル全体をスキャンしている場合、それはあなたの減速が起こっている場所だと思います。

SQL Serverを使用している場合は、execution planを調べて、実際に何が減速しているのかを調べることができます。

実際に複雑でメンテナンスが難しいものを設計する前に、データベースの最適化をより詳細に説明してください。

関連する問題