gpt4 book ai didi

mysql - 摆脱慢速子查询

转载 作者:行者123 更新时间:2023-11-29 00:14:27 24 4
gpt4 key购买 nike

我有一个连接到我的服务器的数据库,目前有 2,300,000 行。

我运行以下查询来查找用户的连接,如果 nick/ip/client_id 相同则删除重复项。

SELECT
`nick`,
INET_NTOA(`ip`) as `ip`,
HEX(`client_id`) as `client_id`,
UNIX_TIMESTAMP(`date`) as `date`
FROM
(SELECT * FROM `joins` ORDER BY `date` DESC) as `sub`
WHERE
`nick` LIKE '%nick%'
-- Can also be things like this:
-- `ip` & INET_ATON('255.255.0.0') = INET_ATON('123.123.0.0')
GROUP BY
`nick`,
`ip`,
`client_id`
ORDER BY
`date` DESC
LIMIT 500

为什么首先要使用子查询?在使用 GROUP BY 时获取最新的日期值。

最佳答案

我认为您误解了 ORDER BYGROUP BY 在此查询中的作用。为了获取每个 nick,ip,client_id 的最新日期,您可以按如下方式编写查询:

SELECT    `nick`,    INET_NTOA(`ip`) as `ip`,    HEX(`client_id`) as `client_id`,    MAX(UNIX_TIMESTAMP(`date`)) as `date`FROM`joins`WHERE    `nick` LIKE '%nick%'    -- Can also be things like this:    --   `ip` & INET_ATON('255.255.0.0') = INET_ATON('123.123.0.0')GROUP BY    `nick`,    `ip`,    `client_id`ORDER BY    `date` DESCLIMIT 500

根本不需要子查询。此代码对数据进行分组,然后返回

的最大值
UNIX_TIMESTAMP(`date`)

作为日期

关于mysql - 摆脱慢速子查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23490025/

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