Что такое хороший дизайн для системы ранжирования - PullRequest
3 голосов
/ 08 декабря 2010

У меня есть таблица USER, в которой есть поля userId и point. Во время выполнения я хочу знать, каков рейтинг конкретной базы пользователей по их точке. Каков наилучший способ сделать это:
1: Запрос всех пользователей в список. Сортируйте список по пунктам и выполните бинарный поиск, чтобы найти рейтинг этого пользователя. Звучит как плохая идея.
2. Возможно ли выполнить эти задачи, создав запросы к базе данных?

Я ожидаю 2000-5000 пользователей.

1 Ответ

5 голосов
/ 08 декабря 2010
SET @rownum := 0;

SELECT rank, userId, point 
FROM (
       SELECT @rownum := @rownum + 1 AS rank, userId, point
       FROM user ORDER BY point DESC
     ) 
as result WHERE userId = xxxxxxxx
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...