慢速MySQL选择PK> X

时间:2017-09-11 19:34:58

标签: mysql

我有一个包含以下结构的约500万行的表:

CREATE TABLE `books` (
  `asin` char(10) CHARACTER SET latin1 NOT NULL,
  `title` varchar(512) NOT NULL,
...other fields...
  PRIMARY KEY (`asin`),
  KEY `lang` (`lang`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

我试图在其上运行一个脚本,为此我使用"从书中选择* asin> X限制10000"并记住最后的PK。

我希望这个查询非常快,因为我通过PK查询,但是性能正在慢慢降低,查询花了将近1分钟(在开始时曾经更好)。为什么会这样?

解释示例:

mysql> explain select * from books where asin > 'B000OT86OY' limit 10000;
+----+-------------+-------+-------+---------------+---------+---------+------+---------+-------------+
| id | select_type | table | type  | possible_keys | key     | key_len | ref  | rows    | Extra       |
+----+-------------+-------+-------+---------------+---------+---------+------+---------+-------------+
|  1 | SIMPLE      | books | range | PRIMARY       | PRIMARY | 10      | NULL | 4670633 | Using where |
+----+-------------+-------+-------+---------------+---------+---------+------+---------+-------------+

1 个答案:

答案 0 :(得分:0)

我能够通过执行ALTER TABLE books ORDER BY asin ASC来缓解这个问题。我想问题是我的光盘上的行距离很远,所以在完成上述操作后,查询就会立即生效。