데이터베이스에서 최신 데이터를 가져 오려면 다음 SQL 쿼리를 사용하고 있습니다.최신 데이터 가져 오기 - SQL 쿼리 최적화
이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`)
)
그 쿼리로드 "나이"를 취 데이터베이스가 어떻게 보이는지 여기
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
그리고이다. 그러나 WHERE datetime_logged IN (SELECT MAX(datetime_logged) FROM discord)
을 제거하고 LIMIT 10
을 쿼리에 추가하면 페이지가 빠르게로드됩니다!
SQL 쿼리의 목적은 discord
테이블의 최신 데이터 만 가져 오는 것입니다. 데이터는 15 분마다 만 업데이트되므로 쿼리를 통해 최신 데이터를 쉽게 얻을 수 있습니다.
discord
및 discord_users
과의 관계는 사용자로부터 정보를 얻으려면 discord_users
의 ID가 필요합니다. discord
은 discord_users
입니다.
"한쪽?
) 무엇을 의미합니까?
Q) 테이블에 차등 인덱스가 없는데도 discord_users 테이블에서 2 커서를 여는 이유는 무엇입니까?
a) 다시 한번 말하지만 무엇을 의미합니까? :)
여기 내 질문이 있습니다. SQL 쿼리를 최적화하여 페이지를로드하는 데 거의 1 분이 걸리지 않도록하려면 어떻게합니까? 페이지 링크 : https://erik-edgren.nu/discord
'datetime_logged'에 대한 색인을 만드셨습니까? –
미안하지만 무슨 뜻인지 정확히 모르겠습니다. 내 업데이트 된 질문을 참조하십시오. – Erik
자세한 내용은 [this] (http://dev.mysql.com/doc/refman/5.7/en/optimization-indexes.html)을 참조하십시오. –