Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL评分表优化_Mysql_Sql_Optimization - Fatal编程技术网

MySQL评分表优化

MySQL评分表优化,mysql,sql,optimization,Mysql,Sql,Optimization,我在MySQL中有一个分级表: 玩家id整数,游戏类型整数,等级整数 有5种不同的游戏类型(如国际象棋、支票、围棋等) 游戏评分越高越好 我想获得总评分最高的前10名球员id。总评分=所有游戏类型的所有评分之和。 我可以这样解决: SELECT player_id, SUM(rating) as TotalRating FROM RatingTable GROUP BY player_id ORDER BY TotalRating DESC LIMIT 10; 但我担心的是,如果有1000

我在MySQL中有一个分级表: 玩家id整数,游戏类型整数,等级整数 有5种不同的游戏类型(如国际象棋、支票、围棋等) 游戏评分越高越好 我想获得总评分最高的前10名球员id。总评分=所有游戏类型的所有评分之和。 我可以这样解决:

SELECT player_id, SUM(rating) as TotalRating 
FROM RatingTable 
GROUP BY player_id
ORDER BY TotalRating DESC
LIMIT 10;

但我担心的是,如果有1000万玩家有5种不同的游戏类型,这将需要大量的内存和cpu。它将汇总所有10百万玩家的所有评分,然后进行排序。如何优化它?

我觉得这很好。确保添加索引。这是您所需要的,并且在运行时没有经济高效的方法,为预测的记录数生成模拟数据并执行查询以查看结果,如果这不起作用,您将不得不为用户和相应的总和(评级)创建映射表这样,您就不必在运行时进行计算。让我们从另一个角度来处理它。您每天运行该查询多少次?某个级别一天更改多少次?