我有一个简单的查询,它计算记录的数量是一个带有一些内部联接和一些标准的普通查询。
像这样的东西。select count(*)
from ......
where ....
order by .........at most 4 fields.
我的问题 asc 或 desc 最多4个字段的顺序对性能有一些影响?或者只是被引擎忽略或优化。
对不起,如果问题是简单或简单的问候。
答案 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不是索引的一部分)然后以某种方式这种顺序会对性能产生影响。
尊重您的问题不会被忽略,也不会被引擎优化