簡體   English   中英

獲取最新數據-優化SQL查詢

[英]Get the latest data - optimize the SQL query

我正在使用以下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

如果仍然有問題,請嘗試此選項。 創建INDEX說如index_datelog在列datetime_loggeddiscord表。 然后嘗試下面的查詢

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM