MYSQL对count(*)的orderBy对性能有一些影响吗?

时间:2016-11-05 15:42:10

标签: mysql sql-order-by database-performance

我有一个简单的查询,它计算记录的数量是一个带有一些内部联接和一些标准的普通查询。

像这样的东西。

select count(*)
from ......
where ....
order by .........at most 4 fields.

我的问题 asc desc 最多4个字段的顺序对性能有一些影响?或者只是被引擎忽略或优化。

对不起,如果问题是简单或简单的问候。

2 个答案:

答案 0 :(得分:2)

首先,我应该注意,您所写的查询将只返回一行。您有一个没有GROUP BY的聚合函数。在这种情况下,ORDER BY基本上是一个无操作(我不知道MySQL是否经历了一行的动作)。

通常,order by对性能的影响取决于的数量,而不是键的数量

我只能想到order by对性能影响最小的两种情况:

  • 索引可用于订购。
  • 它跟随GROUP BY并使用聚合键(这在MySQL中只对GROUP BY进行排序)。

当然,少数几行ORDER BY(例如4 )在性能方面可以忽略不计。

然而,影响与键的大小相比,与行数和行的整体大小的关系要小得多。使用多个连接和WHERE子句,您的查询不太可能(但并非不可能)使用ORDER BY的索引。

答案 1 :(得分:1)

在mysql DOC http://dev.mysql.com/doc/refman/5.7/en/order-by-optimization.html

  

在某些情况下,MySQL可以使用索引来满足ORDER BY子句   没有做额外的排序。

     

即使ORDER BY与之匹配,也可以使用索引   索引完全,只要索引的所有未使用部分和所有   额外的ORDER BY列是WHERE子句中的常量

在你使用count的情况下,不应该使用索引(bacause不是索引的一部分)然后以某种方式这种顺序会对性能产生影响。

尊重您的问题不会被忽略,也不会被引擎优化