我有一个简单的查询,它计算记录的数量是一个普通的查询与一些内部连接和一些条件。
像这样。
select count(*)
from ......
where ....
order by .........at most 4 fields.
我的问题是asc或desc最多4个字段的顺序对性能有一些影响?或者只是被引擎忽略或优化。
首先,我应该注意到您编写的查询将只返回一行。你有一个没有GROUP BY
的聚合函数。在这种情况下,ORDER BY
基本上是一个no-op(我不知道MySQL是否会对一行进行操作)。
一般来说,order by
对性能的影响取决于行数,而不是键数。
我只能想到两种order by
对性能影响最小的情况:
- 可以使用索引进行排序。
- 它遵循
GROUP BY
并使用聚合键(这只在MySQL中为GROUP BY
进行排序)。
当然,在少数行(例如4 行)上使用ORDER BY
在性能方面可以忽略不计。
WHERE
子句,查询不太可能(但并非不可能)使用ORDER BY
的索引。
mysql DOC http://dev.mysql.com/doc/refman/5.7/en/order-by-optimization.html
在某些情况下,MySQL可以使用索引来满足ORDER BY子句不做额外的排序。
即使ORDER BY不匹配,也可以使用该索引索引准确,只要将所有未使用的部分和全部索引额外的ORDER BY列是WHERE子句
中的常量。
在你使用count的情况下,索引不应该被使用(因为它不是索引的一部分),然后在某种程度上,这种顺序会对性能产生影响。
尊重你的问题没有被忽略,也没有被引擎优化