我有一个游戏服务器,拥有超过15k的玩家行,并且每个玩家行都有像杀戮,死亡,姓名等一样的列。
所以做服务器端,会非常糟糕,意味着我必须发送15k查询来获得每个玩家的杀伤/死亡率。
基本上我需要做的是,从数据库中获取杀死/死亡平均值。
我有一行,其中包含以下列:
总平均值,总杀人数,总玩家数。
我需要找到总平均值和总杀数。
总平均值基本上是,我加载每个玩家,我接受他的杀戮,并且死亡并将它们分开(杀死/死亡)。所以总平均值包含所有球员的杀伤/死亡比率,然后除以球员数量。
玩家数量将是行数。并且总杀戮是所有行中的所有杀戮。
如何使用SQL执行此操作?这样做有效吗?
答案 0 :(得分:1)
平均杀伤/死亡率:
SELECT AVG(kills/death) AS avg_kd FROM players
总球员:
SELECT COUNT(*) AS tot_players FROM players
总杀人次数:
SELECT SUM(kills) AS tot_kills FROM players
以上所有查询都会扫描所有记录。它不是很有效,但除非您存储这些值并使用触发器更新它们,否则没有其他方法可以做到这一点。
如果您需要进一步的帮助,请提供更多详细信息。
答案 1 :(得分:0)
SQL是执行此操作的最佳位置。 假设你有一张桌子,playrtstats,有15k行,包含以下字段:playerid,kills,deaths,plays ......
所有球员的平均杀伤率:
select sum(kills)/sum(deaths) from playerstats;
想知道死亡率最低的十名球员?
select deaths/plays from playerstats order by 1 asc limit 10;