私はリーダーボードを実装する方法に取り組んでいます。私がやりたいことは、いくつかの異なるフィルター(スコア、提出数、平均)でテーブルをソートできるようにすることです。テーブルは次のようになります。
+--------+-----------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------+-----------------------+------+-----+---------+-------+
| userID | mediumint(8) unsigned | NO | PRI | 0 | |
| score | int | YES | MUL | NULL | |
| numSub | int | YES | MUL | NULL | |
+--------+-----------------------+------+-----+---------+-------+
そして、次のようなデータのサンプルセット:
+--------+----------+--------+
| userID | score | numSub |
+--------+----------+--------+
| 505610 | 1245 | 2 |
| 544222 | 1458 | 2 |
| 547278 | 245 | 1 |
| 659241 | 12487 | 8 |
| 681087 | 5487 | 3 |
+--------+----------+--------+
私のクエリは PHP から来ます。
// get the top 100 scores
$q = "select userID, score from table order by score desc limit 0, 100";
これは、最初に並べ替えられたユーザー ID/スコアのセットを返します。また、numSub (送信数) で並べ替えるクエリもあります。
私が望むのは、score/numSub である平均スコアでテーブルをソートすることです。テーブルは大きくなる可能性があるため、効率が重要です。
前もって感謝します!