小编Cha*_*Hsu的帖子

在ORDER BY中查询速度非常慢,LIMIT范围更大

MySQL 5.6,64位,RHEL 5.8
使用ORDER BY和LIMIT'row_count'(或LIMIT 0,'row_count')对大型表进行查询.如果'row_count'较大,那么结果集的实际计数将非常慢.

案例1:下面的查询非常快(没有'限制'):

mysql> SELECT * FROM syslog WHERE 
        (ReportedTime BETWEEN '2013-11-04' AND '2013-11-05') AND
        Priority<3 AND Facility=1 ORDER BY id DESC;
+---
| ...
6 rows in set (0.01 sec)
Run Code Online (Sandbox Code Playgroud)

情况2:下面的查询也很快('LIMIT 5'):

mysql> SELECT * FROM syslog WHERE 
        (ReportedTime BETWEEN '2013-11-04' AND '2013-11-05') AND
        Priority<3 AND Facility=1 ORDER BY id DESC LIMIT 5;
+---
| ...
5 rows in set (0.42 sec)
Run Code Online (Sandbox Code Playgroud)

情况3:下面的查询非常慢('LIMIT 7',可以使用任何'row_count'值> 6):

mysql> SELECT * FROM syslog WHERE 
        (ReportedTime BETWEEN '2013-11-04' AND …
Run Code Online (Sandbox Code Playgroud)

mysql sql optimization performance

3
推荐指数
1
解决办法
2208
查看次数

标签 统计

mysql ×1

optimization ×1

performance ×1

sql ×1