gpt4 book ai didi

mysql - 当行数较多时,SQL 查询需要很长时间

转载 作者:行者123 更新时间:2023-11-29 11:53:29 25 4
gpt4 key购买 nike

使用查询:

SELECT st.*
FROM surf_times st
WHERE st.Time =
(SELECT MIN(t.Time)
FROM surf_times t
WHERE t.SteamID = st.SteamID AND t.Map = st.Map)
AND st.Map = "surf_milkyway"
ORDER BY st.Time
LIMIT 15

需要 0.15~ 秒,有 7 个结果:

Showing rows 0 - 6 (7 total, Query took 0.1650 sec) [Time: 61.76 - 70.05]

在将返回 15 个结果的表上运行此查询时,突然需要 23 秒

Showing rows 0 - 14 (15 total, Query took 23.0710 sec) [Time: 47 - 52.13]

“surf_milkyway”共有 17 行,执行时间为 0.16~ 秒。

“surf_beginner”总共有 2496 行,执行需要 23~ 秒。

当搜索的 map 表中结果较多且比较和排序需要较长时间时,需要花费 20 秒以上的时间。查询或表索引方式等是否有问题?

表格结构如下:

SteamID - bigint(20)
Name - varchar(255)
Map - varchar(255)
Time - float
Date int(20)
id - int(11) - AUTO_INCREMENT, Primary

最佳答案

未关联的查询总是比关联的查询执行得更好,但如果性能仍然很差,那么我们确实需要查看表 CREATE 语句和 EXPLAIN 的结果...

SELECT a.*
FROM surf_times a
Join
(SELECT steamid,map, MIN(Time) min_time
FROM surf_times
Group by steamid,map) b
On b.steamid = a.steamid
And b.map = a.map
And b.min_time = a.time
Where a.Map = "surf_milkyway"
ORDER BY a.Time
LIMIT 15

关于mysql - 当行数较多时,SQL 查询需要很长时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33604992/

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