如何在数据库中有效存储高分?
我有一个表player_score,其中有两列player_id(主键)和score(整数值)。
现在我想要一个玩家在高分中的位置,我创建了以下查询
SELECT player_score.player_id,
(SELECT COUNT(*) FROM player_score ps WHERE ps.score >= player_score.score) AS position
FROM player_score
WHERE player_score.player_id = 19
我认为这是非常低效的,你还有其他想法吗?还可以想象使用elasticsearch或任何其他技术来有效地存储这些数据。
最佳答案
您可以使用以下查询来获取用户在高分列表中的确切位置:
SELECT COUNT(*)+1 AS pos
FROM (SELECT *
FROM player_score
ORDER BY score DESC) AS ordered_scores, player_score
WHERE player_score.player_id=3 AND player_score.score < ordered_scores.score;
关于mysql - 有效地将高分存储在数据库中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32580186/