gpt4 book ai didi

mysql - Radius SQL查询-优化

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

我根本不是 SQL 专家,但我有一个 SQL 查询,已在小型 FreeRadius 服务器上自动使用。现在我们想在更大的服务器上使用它,但我注意到查询需要很长时间,并且 CPU 利用率为 100% 大约两分钟...

有人知道如何优化查询吗?目标是查找用户是否有多个事件登录,并获取最旧的信息。

我们还可以接受更多结果,并在 PHP 中进行排序,以减少 radius 数据库的负载。

这是我们今天使用的查询:

  SELECT username, acctstarttime, acctsessionid, nasipaddress, framedipaddress
FROM radacct
WHERE username IN (
SELECT username
FROM radacct
WHERE acctstoptime IS NULL
GROUP BY username
HAVING COUNT(username) > 1
)
AND acctstoptime IS NULL
GROUP BY username
ORDER BY username, acctstarttime ASC

问候

最佳答案

我认为我们可以对整个 radacct 表进行一次传递:

SELECT username, MIN(acctstarttime) AS min_start_time
FROM radacct
WHERE acctstoptime IS NULL
GROUP BY username
HAVING COUNT(*) >= 2
LIMIT 0, 30;

这将仅返回拥有两个或更多事件帐户的用户。它还会返回每个用户的最新 acctstarttime 值。

关于mysql - Radius SQL查询-优化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49666943/

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