我们正在为一堆游戏运行一个统计站点,但是在日志已经超过100MB后,事情开始放缓,所以我们需要优化我们的查询。简单的MySQL查询需要很长的时间
然而,我们发现,我们认为是一个简单的查询,需要大约1.5秒:
SELECT handle,
(
SELECT COUNT(*)
FROM kills
WHERE killer=p.handle
AND k_team != c_team
AND gid=p.gid
) AS kills
FROM players as p
WHERE gid="3245"
AND team="axis"
ORDER BY kills DESC LIMIT 0, 10;
这就产生了团队的一个结果列表。
表击杀和玩家包括36000和4000行恭敬地。
为什么这个查询需要这么长时间,它如何优化?我们应该看看JOIN吗?
最好的问候, 拉卡
表'杀死'是否有GID以外的玩家FK?看起来你缺少'team ='axis'join,除非gid足够。 – 2009-04-18 18:53:23