gpt4 book ai didi

MySQL 查询优化技巧

转载 作者:太空宇宙 更新时间:2023-11-03 11:11:48 25 4
gpt4 key购买 nike

我有一个游戏应用程序,用户可以在其中回答问题,评分基于回答这些问题所用的时间。

我正在尝试构建一个返回前 20 名玩家评级的查询。游戏有一些阶段,我需要检索玩过所有阶段的玩家(假设阶段数为 5)

这是我写的:

SELECT `usersname` , `time`
FROM `users`
WHERE `users`.`id`
IN (
SELECT `steps`.`user_id`
FROM `steps`
GROUP BY `steps`.`user_id`
HAVING COUNT( `steps`.`id` ) = 5
)
ORDER BY `time` ASC
LIMIT 20

在内部选择中,我选择了所有玩过 5 个阶段(步骤)的 user_id。查询工作正常,但速度非常慢。执行大约需要一分半钟。你能提供一些优化它的技巧吗?内部选择返回大约 2000 行。

如果您需要更多信息,请随时问我。

最佳答案

尝试使用 JOIN,而不是 IN (SELECT ...):

SELECT usersname , `time`
FROM users
JOIN
( SELECT steps.user_id
FROM steps
GROUP BY steps.user_id
HAVING COUNT(*) = 5
) grp
ON grp.user_id = users.id
ORDER BY `time` ASC
LIMIT 20

关于MySQL 查询优化技巧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8047383/

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