gpt4 book ai didi

mysql - 获取最新数据——优化SQL查询

转载 作者:行者123 更新时间:2023-11-29 20:39:05 26 4
gpt4 key购买 nike

我正在使用以下 SQL 查询来从数据库获取最新数据。

SELECT d.id AS id_d,
d.id_user AS id_du,
d.id_channel AS id_dc,
d.datetime_logged AS logged

FROM discord AS d
JOIN discord_users AS du
ON d.id_user = du.id
WHERE datetime_logged IN (SELECT MAX(datetime_logged) FROM discord)
ORDER BY du.data_name ASC

数据库如下所示:

CREATE TABLE IF NOT EXISTS `discord` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`id_user` int(11) NOT NULL,
`id_channel` varchar(50) NOT NULL,
`id_game` int(11) NOT NULL,
`data_muted_server` tinyint(4) NOT NULL,
`data_muted_self` tinyint(4) NOT NULL,
`data_deafen_server` tinyint(4) NOT NULL,
`data_deafen_self` tinyint(4) NOT NULL,
`data_suppressed` tinyint(4) NOT NULL,
`data_status` varchar(10) NOT NULL,
`data_game` text,
`datetime_logged` datetime NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `id` (`id`)
)

CREATE TABLE IF NOT EXISTS `discord_users` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`data_id` text NOT NULL,
`data_name` varchar(50) NOT NULL,
`data_avatar` text,
PRIMARY KEY (`id`),
UNIQUE KEY `id` (`id`)
)

该查询需要“年龄”才能加载。但是,如果我删除 WHERE datetime_logged IN (SELECT MAX(datetime_logged) FROM Discord) 并将 LIMIT 10 添加到查询中,页面加载速度会非常快!

<小时/>

SQL 查询的目的是仅从表 discord 中获取最新数据。由于数据每 15 分钟才更新一次,因此查询将轻松获取最新数据。

discorddiscord_users 的关系是,discord 需要来自 discord_users 的 ID 才能获取来自用户的信息。

进一步回答 symcbean 的问题:

问) 当您显然根据关系的“多”方的内容将输出限制为单个记录时,为什么您要按“一”方排序?

A)你是什么意思?

问) 为什么在discord_users 表上没有差异索引的情况下打开2 个游标?

A)再说一次,你是什么意思? :)

<小时/>

这是我的问题。如何优化 SQL 查询,使其加载页面的时间不超过 1 分钟?这是该页面的链接:https://erik-edgren.nu/discord

最佳答案

如果问题仍然存在,请尝试此选项。在 discord 表的 datetime_logged 列上创建一个 INDEX,例如 index_datelog。然后尝试下面的查询

SELECT 
d.id AS id_d, d.id_user AS id_du, d.id_channel AS id_dc, d.datetime_logged AS logged
FROM
discord d
JOIN
discord_users du ON d.id_user = du.id USE INDEX(index_datelog))
WHERE
d. datetime_logged = (SELECT MAX(datetime_logged) FROM discord)
ORDER BY d.datetime_logged ASC

关于mysql - 获取最新数据——优化SQL查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38688705/

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