1

私はこれにちょっと迷っています。一連のカウントクエリを作成して、特定の期間の最終ログイン日を持つすべてのレコードを検索できます。たとえば、先週の1日あたりのカウント数(7カウントクエリ、1日1回)などですが、私はこれを行うための気の利いた、より効率的なRuby/Railsの方法があるかどうかを知ることに興味があります。

投稿するサンプルコードは実際にはありません。たぶん、このようなものが役立つでしょう:

hour_range = 7 * 24 # 7 days worth of hours
start_date = Time.now.to_time - day_range
end_range = Time.now
start_date.to_date.upto(end_range.to_date) do |day|
    # Series of count queries which populate an array of counts for each day...
end

クライアント側のグラフをグラフ化するためにHighchartsを使用しています(または試してみています)。

ありがとう。

4

1 に答える 1

2

事前に計画している場合は、インデックスを作成できる派生列をテーブルに作成できます。これにより、結果をグループ化するのは非常に簡単になります。

たとえば、日ごとにグループ化する場合は、[日付]列を作成します。週ごとにグループ化する場合は、使用可能な日付関数のいくつかを使用してグループ化し、2012年の第4週のような値を生成できます。月はフォーマットされた日付201204であるため、さらに簡単です。%Y%M

これらのほとんどは、ネイティブSQL日付フォーマット関数を使用した既存のデータへの個別の移行として、または一連のbefore_saveフックとして設定できます。

レポートを効率的かつ応答性の高いものにする方法は、可能な限り少ない数のクエリを実行し、それらのクエリをDBが可能な限り簡単に計算できるようにすることです。数百のレコードをロードしたり、数十のクエリを実行したりしても、拡張性はありません。

于 2012-04-12T15:03:44.277 に答える