リモートサーバーに保存されたハイスコアシステムを必要とする iPhone アプリを開発しています。
リストの 500 位にいる場合、画面には 495 から 505 の場所が表示されます。
編集 (これについて言及するのを忘れていました): 「ロンドン」、「スーパー ヒーロー チーム」、「フィクション ファン」など、複数のリストに参加できます。数百万のユーザーと数千のグループが存在する場合、すべてのリストで自分のプレースメント周辺の 10 か所を最も効率的に選択するにはどうすればよいですか?
私は次のことを考えました:
- リストごとに 1 つ選択します。
select * from scores where list = '$list' order by points desc limit $myplace-5, 10
- すべてのリストを 1 回選択:
select * from scores where list in ($lists) order by list, points desc
次に、PHP を使用して適切なスポットを選択します。
すべての新しいデータベース タイプ (NoSQL など) が登場しましたが、この問題に最適なデータベース タイプはありますか?
たとえば、スコアを最初から適切な場所に挿入して、それぞれselect
がデータを並べ替える必要がないようにしますか?
または、あなたの場所の周りの 10 か所をすばやく選択する方法はありますか? (正しい行を選択した場合、実際の並べ替えはクライアント側で発生する可能性があります)