gpt4 book ai didi

MySQL 求和查询需要很长时间才能完成。寻找瓶颈

转载 作者:可可西里 更新时间:2023-11-01 07:37:24 28 4
gpt4 key购买 nike

我正在运行一个简单的 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

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

更新。时间是 INT(11) 字段,不涉及转换。

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

这个问题没有简单的答案。索引正确,不涉及耗时的转换。这只是关于 DB enege 调整 — 为什么定位这 30000 条记录和检索数据要花费这么多时间?

重要的是要说该表使用 InnoDB 引擎并包含大约 200 万条记录。

最佳答案

尝试像这样为 userId 创建索引将解决您的问题:

   ALTER TABLE game_attempts ADD INDEX (userId);

关于MySQL 求和查询需要很长时间才能完成。寻找瓶颈,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17942866/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com