База данных имеет следующие столбцы:
id, uuid, трофеи
Чтобы получить рейтинг игрока на основании трофеев, я в настоящее время использую этот запрос:
SELECT rank FROM (SELECT (@num := @num +1) as rank, uuid FROM User,
(SELECT @num := 0) x ORDER BY trophies DESC) as TMP WHERE
uuid=UNHEX('7c6d37759dd749349f2c32303a367226');
Однако запрос занимает около 1,3 секунды из-за размера базы данных (300 000 игроков).
Есть ли более эффективный метод получения рангового числа в MySQL?
Вот инструкция SHOW CREATE TABLE в соответствии с запросом:
CREATE TABLE `User` (`id` int(11) NOT NULL AUTO_INCREMENT,
`uuid` binary(16) DEFAULT NULL, `trophies` int(11) DEFAULT NULL,
PRIMARY KEY (`id`), UNIQUE KEY `uuid` (`uuid`)
) ENGINE=InnoDB AUTO_INCREMENT=57917982 DEFAULT CHARSET=latin1
ОБЪЯСНИТЕ утверждение:
