LIMIT X的排序速度很慢(但LIMIT X-1速度很快)

时间:2014-03-23 19:20:34

标签: mysql indexing sql-order-by

我知道此主题已经发布了很多问题,但我找不到解决问题的方法。

我只有一个包含1.042.162行的表。 表定义:

CREATE TABLE `tbllinks` (
  `idLinks` int(11) NOT NULL AUTO_INCREMENT,
  `linksText` varchar(500) DEFAULT NULL,
  `linksLastChecked` datetime DEFAULT NULL,
  `linksLastNewData` datetime DEFAULT NULL,
  PRIMARY KEY (`idLinks`),
  UNIQUE KEY `idtblLinks_UNIQUE` (`idLinks`),
  UNIQUE KEY `linksText_UNIQUE` (`linksText`),
  KEY `fasterDate` (`linksLastChecked`),
  KEY `faster2` (`linksText`)
) ENGINE=InnoDB AUTO_INCREMENT=3029595 DEFAULT CHARSET=latin1;

这一个:

SELECT * FROM tbllinks order by linksLastChecked asc limit 9324;

需要0.094秒。 这一个:

SELECT * FROM tbllinks order by linksLastChecked asc limit 9325;

需要42.559秒。

两个查询只返回" Null" linksLastChecked列中的值(右边),但大多数数据集都有值。 数据集9325也没有什么特别之处。所以我真的不知道为什么只有一个数据集更长时间。

修改:
通过解释,它可以解释为什么需要这么长时间。

+----+-------------+----------+-------+---------------+------------+---------+------+------+-------+
| id | select_type | table    | type  | possible_keys | key        | key_len | ref  | rows | Extra |
+----+-------------+----------+-------+---------------+------------+---------+------+------+-------+
|  1 | SIMPLE      | tbllinks | index | NULL          | fasterDate | 6       | NULL | 9324 | NULL  |
+----+-------------+----------+-------+---------------+------------+---------+------+------+-------+
+----+-------------+----------+------+---------------+------+---------+------+--------+----------------+
| id | select_type | table    | type | possible_keys | key  | key_len | ref  | rows   | Extra          |
+----+-------------+----------+------+---------------+------+---------+------+--------+----------------+
|  1 | SIMPLE      | tbllinks | ALL  | NULL          | NULL | NULL    | NULL | 805031 | Using filesort |
+----+-------------+----------+------+---------------+------+---------+------+--------+----------------+

第一个是使用索引键,第二个不是!但我还有一个问题,为什么第二个是没有805031行?

编辑:(答案)
好的,我甚至都会问。我只是用错误的问题搜索过。 在搜索" mysql时,不使用索引"我找到了这篇不错的文章 http://code.openark.org/blog/mysql/7-ways-to-convince-mysql-to-use-the-right-index
虽然USE INDEX对我不起作用,但FORCE INDEX有所帮助。

0 个答案:

没有答案