2011-02-18 5 views
3

500,000行のMySQLテーブルがあるとします。各行には、ポイントと呼ばれる数値のフィールドがあります。ユーザーがサイト上で何かをするたびに、ポイントはアクティビティに基づいて正または負の方向に更新されます。 pointsフィールドにインデックスを付けて、ソートされたユーザーリストをポイント単位で取得するのは簡単です。しかし、ランダムな行がリストのどこにあるのかを知る必要があるときはどうすればよいですか?ユーザーのプロファイルをプルアップし、他のユーザーとの関係で「ランク」を表示するコードを記述する場合は、その情報を効率的に利用できるように、つまりユーザーテーブル全体を選択することなく、どのシステムに配置しますか。ベストプラクティスユーザー評価データの格納、変更、取得

ありがとうございます。

+0

私は質問のタイトルを編集していますが、詳細は取り上げませんが、手元の質問に具体的になるように編集しました。うまくいけば、 "help plz"よりもっと注意を引くだろう... :) – Charles

答えて

4

直接のアプローチ(既に持っているインデックスを使用して)は機能しますか?

xは、あなたが見ているユーザーのためのポイント数である
select count(*) from user_points where points > x 

:私のようなものを考えています。

+0

私はこの考えが好きです。 –

関連する問題