ゲームのユーザー ベースが 100 万人で、一度にログインするユーザー数が 10 人程度である場合、Web サイトでアクティブなユーザー数を表示できるようにするには、どのように構成するのが最善でしょうか? あなたは素朴なことをしたくないでしょう(私は思う)SELECT count(*) FROM users WHERE logged_in = 1
質問する
53 次
2 に答える
1
テーブルを維持しlogins
、ユーザーがログインするたびにこのテーブルに追加し、ユーザーがログオフするときにエントリを削除します。テーブルには有効期限もある可能性があるため、ログインのタイムアウトを考慮して、次のようにクエリを実行できます。
SELECT COUNT(*) FROM dbo.Logins WHERE LoginExpiry < GETDATE()
于 2012-11-08T17:18:10.643 に答える
0
2つのこと。まず、logged_in列にインデックスを配置します。第二に、これは単なるタイプミス (select-column の欠落) であると想定しています。必要なのはカウントのみである場合、これはクエリです。
select count(*) from users were logged_in = 1
別の統計テーブルを保持して、すばやくアクセスしたい任意の数の集計を追跡できます。そして、それはまったく悪い考えではありません。ただし、インデックスを追加すると、この特定のクエリをかなり高速に保つことができます。他の集計ユーザー統計を定期的にレポートする必要が生じたら、その目的のために統計表を作成します。
心に留めておいてください、あなたがそのルートをたどった場合、あなたの統計表はしばしば非常に単純になる可能性があります:
stat_id : int
name : varchar
int_value : int
float_value : float
次に、各ログインが必要なのは...
update stats set int_value += 1 where name = 'logged_in_users';
そして、ログアウトするたびに...
update stats set int_value -= 1 where name = 'logged_in_users';
また、ユーザーを自動ログアウトし、統計テーブルを定期的に「再構築」するジョブの可能性もあります。
于 2012-11-08T17:18:34.780 に答える