我经营一个致力于跟踪在线游戏玩家统计数据的网站。该网站的一个功能是为他们建立图表,以跟踪他们过去2000场比赛的进展情况。
我目前正在做的是使用此查询获取所有记录,然后使用PHP以大约100次战斗的增量选择记录,直到我拥有构建图表所需的20条记录:
SELECT DISTINCT battles, victories, survived, destroyed, detected,
hitratio, damage, capture, defense, avg_exp, efficiency
FROM account_stats
WHERE account_id = XXXXXXX
AND battles >= ZZZZZZZ;
ZZZZZZZ是他目前的战斗数量减去2000.我使用的是不同的,因为数据库可以保留重复值(这是因为一些历史功能)。
我必须使用近似值的原因是因为我从游戏的API中获取数据,所以在一次检查中,他可能玩了多个游戏。这意味着在数据库中,“战斗”计数将以不同的增量进行。
使用上面的查询只会查杀数据库服务器,因为它会在磁盘上创建大量临时表,从而使整个网站都被抓取。
所以我的问题是:有没有办法可以在数据库中精确选择20行,选择CLOSEST到100次战斗的行,而不使用DISTINCT / GROUP BY /在磁盘上创建临时表的任何内容? / p>
提前致谢!