次のような MySQL テーブルがあるとします。このテーブルでは、いつ (Date) ユーザー (User.id) が私の Web サイト (Article.id) で記事を読んだかを追跡します。
------------------------------------------
Article_Impressions
------------------------------------------
date | user_id | article_id
--------------------+---------+-----------
2013-04-02 15:33:23 | 815 | 2342
2013-04-02 15:38:21 | 815 | 108
2013-04-02 15:39:33 | 161 | 4815
...
特定の日のユーザーあたりの平均セッション時間と同様に、セッション数を特定しようとしています。別の記事の後に 30 分以内に記事が読まれなかった場合、セッションは終了します。
質問
特定の日に行ったセッション数を効率的に判断するにはどうすればよいですか? PHPとMySQLを使用しています。
私の最初のアイデアは、ユーザー別にソートされた、特定の日のすべてのデータを照会することです。次に、各ユーザーを反復処理し、インプレッションが最後のインプレッションから 30 分以内にあるかどうかを確認し、各ユーザーがその日に行ったセッションの合計数を集計します。
私たちのサイトでは 1 日に約 200 万回のインプレッションがあるため、このレポート ジェネレーターを最適化しようとしています。