簡體   English   中英

MYSQL 成員日志查詢慢 - 性能問題

[英]MYSQL MEMBER LOG QUERY SLOW - PERFOMANCE PROBLEM

我有一張表,用於記錄成員。

這里有 1,486,044 條記錄。

SELECT * FROM `user_log` WHERE user = '1554143' order by id desc

但是,此查詢需要 5 秒。 你有什么建議嗎 ?

下面的表結構;

CREATE TABLE IF NOT EXISTS `user_log` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `user` int(11) NOT NULL,
  `operation_detail` varchar(100) NOT NULL,
  `ip_adress` varchar(50) NOT NULL,
  `l_date` datetime NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
COMMIT;

對於此查詢:

SELECT * FROM `user_log` WHERE user = 1554143 order by id desc

您需要(user, id desc)上的索引。

請注意,我刪除了user過濾值周圍的單引號,因為該列是一個數字。 這不一定會加快速度,但更干凈。

另外: select *不是一個好習慣,也不利於性能。 您應該在結果集中枚舉您想要的列(如果您不需要它們,請不要全部選擇它們)。 如果您想要所有列,因為您的表沒有很多列,您可能想要嘗試對所有 5 列進行覆蓋索引,例如: (user, id desc, operation_detail, ip_adress, l_date)

除了已經提到的在 (user, id) 上創建索引的選項之外,可能更好的選擇是將表轉換為 InnoDB,因為僅在 (user) 上創建索引。

暫無
暫無

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

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