何十万ものエントリを含む MySQL テーブルがあります。
日付範囲を指定し、それら 2 つの日付の間のすべてのエントリを選択する必要があります。次に、エントリを 1 時間ごとに分類し、特定のフィールドを取得する必要があります。
ユース ケース: 6 月 6 日から 6 月 12 日までのエントリの 1 時間ごとの内訳が必要です。したがって、6 月 6 日には、午前 12 時から午前 1 時、午前 1 時から午前 2 時、午前 2 時から午前 3 時などのエントリの配列が必要になります。
どちらが速いですか?(なぜ!):
144 個の SQL クエリを実行する
SELECT device_id FROM entries WHERE updated_at >= sometime AND updated_at <= sometime+1.hour
と、午後 12 時から午後 1 時、午後 1 時から午後 2 時などのようになります。1 つの SQL クエリを実行して、全期間
SELECT device_id FROM entries WHERE updated_at >= start_date AND updated_at <= end_date
内のすべてのエントリを取得し、 ruby を使用してエントリを時間ごとにグループ化します。
ruby や MySQL がこの種のものに対してなぜ高速なのかについてのリソースを誰かが持っていれば、それは大歓迎です。いくつかの読書をしたいと思います。