当前位置: 首页 > mysql, 数据库 > 正文

mysql order by 主键 非常慢

关键字:
1 星2 星3 星4 星5 星 (2 次投票, 评分: 5.00, 总分: 5)
Loading ... Loading ...
baidu_share

今天我用一下mysql order by 主键 的一条sql非常慢,10分钟左右才返回。表的数据有200百万条左右。

1
2
3
SELECT t2.`id`
	FROM v9_news t2
	WHERE t2.status=99 AND t2.islink=0  ORDER BY t2.id ASC LIMIT 0,100

用explain 该sql

1
2
3
4
5
+----+-------------+---------+------+---------------+------+---------+------+--------+----------------+
| id | select_type | table   | type | possible_keys | key | key_len | ref | rows   | Extra          |
+----+-------------+---------+------+---------------+------+---------+------+--------+----------------+
| 1 | SIMPLE       | t2      | index| status         |PRIMARY| 4 | null |1536549| Using filesort |
+----+-------------+---------+------+---------------+------+---------+------+--------+----------------+

Extra使用了Using filesort ,呜呜!
用explain 该sql

1
2
3
SELECT t2.`id`
	FROM v9_news t2
	WHERE t2.status=99 AND t2.islink=0  LIMIT 0,100
1
2
3
4
5
+----+-------------+---------+------+---------------+------+---------+------+--------+----------------+
| id | select_type | table   | type | possible_keys | key | key_len | ref | rows   | Extra          |
+----+-------------+---------+------+---------------+------+---------+------+--------+----------------+
| 1 | SIMPLE       | t2      | index| status         |PRIMARY| 4 | null |1536549| Using index |
+----+-------------+---------+------+---------------+------+---------+------+--------+----------------+

这次Extra使用了Using index
比较了一下两者结果,是一样的。
看来,使用where 的时候就已经使用了index,而且是默认的升序排序。而自己添加了order by id asc ,反倒使用了全表排列。导致速度奇慢。搞清楚最基本原理很重要,不然就画蛇添足了。

本文固定链接: http://www.chepoo.com/mysql-order-by-primary-ke-solwly.html | IT技术精华网

mysql order by 主键 非常慢:等您坐沙发呢!

发表评论