elasticsearch,architecture,Mysql,Sql,elasticsearch,Architecture" /> elasticsearch,architecture,Mysql,Sql,elasticsearch,Architecture" />

Mysql 在数据库中高效存储高分

Mysql 在数据库中高效存储高分,mysql,sql,elasticsearch,architecture,Mysql,Sql,elasticsearch,Architecture,如何在数据库中高效地存储高分 我有一个表player\u score,有两列player\u 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 playe

如何在数据库中高效地存储高分

我有一个表player\u score,有两列player\u 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;

我想没关系。您可以更改而不是COUNT*put COUNTid。在分数上添加索引字段我的测试有1百万个条目,在本地机器上的运行时间为240毫秒。我想没关系。我将把这些值存储在memcache中以获得更高的性能。谢谢你的帮助。