MySQL求和查询需要花费大量时间才能完成.寻找瓶颈

我正在运行一个简单的
MySQL查询来查找用户花在游戏上的总时间:

SELECT userId, SUM(time) AS totalGameTime
                    FROM game_attempts
                    WHERE userId = 19599

EXPLAIN显示以下内容:

id  select_type  table  type  possible_keys  key  key_len  ref  rows  Extra
1  SIMPLE  game_attempts  ref  userId_gameId  userId_gameId  4  const  26880  

PROFILER显示,大部分时间花费在“发送数据”上:

Sending data    1.786524

为什么这么简单的查询需要花费很多时间才能完成?在哪里寻找瓶颈?

UPDATE.时间是INT(11)字段,不涉及转换.

UPDATE.可能的解决方案是引入(userId,time)索引,它通过将部分数据移动到索引树来解决问题.但它并没有解决为什么总结30000个整数需要这么长时间的更大问题.

这个问题没有一个简单的答案.指数是正确的,不涉及耗时的转换.这只是关于DB eninge tuning – 为什么找到那些30000条记录并检索数据需要花费很多时间?

重要的是说使用InnoDB引擎的表并且拥有大约200万条记录.

最佳答案 尝试为userId制作索引,这样可以解决您的问题:

   ALTER TABLE game_attempts ADD INDEX (userId);
点赞