小编rlc*_*ral的帖子

mysql 发送数据的时间太长

我有一个包含数百万条记录(14,000,000)的简单表,对于一个简单的查询,它花费了太多时间“发送数据”。

桌子

CREATE TABLE IF NOT EXISTS details (
  id int(11) NOT NULL,
  date date NOT NULL,
  time int(2) NOT NULL,
  minutes_online decimal(5,0) NOT NULL,
  minutes_playing decimal(5,0) NOT NULL,
  minutes_chatting decimal(5,0) NOT NULL,
  minutes_away decimal(5,0) NOT NULL
  PRIMARY KEY (id,date,time)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci;
Run Code Online (Sandbox Code Playgroud)

简单的查询

mysql> SELECT * FROM details WHERE id = 3014595;
Run Code Online (Sandbox Code Playgroud)

解释

mysql> EXPLAIN SELECT * FROM details WHERE id = 3014595;
+----+-------------+-----------+------+---------------+---------+---------+-------+------+-------+
| id | select_type | table     | type | possible_keys | key     | …
Run Code Online (Sandbox Code Playgroud)

mysql performance

11
推荐指数
1
解决办法
2万
查看次数

在大表上更新排名

我有一个现在有 1200 万条记录的 mysql 表,我正在尝试使用以下 UPDATE 代码更新列(排名):

SET @r=0;
UPDATE records SET rank= @r:= (@r+1) where type = 2 ORDER BY seconds DESC;
Run Code Online (Sandbox Code Playgroud)

几乎每分钟都会插入新行。所以,一小时后,我有几行没有排名,我需要再次更新整个表格。

然而,这需要太多时间。有什么优化方法或不同的方法来更快地更新表吗?也许是一种不同的方法?分区表?

mysql update

6
推荐指数
1
解决办法
3687
查看次数

标签 统计

mysql ×2

performance ×1

update ×1