mysql - 强制 `group by` 排序 DESC 会加快代码速度还是减慢速度?

标签 mysql group-by query-optimization

在 MySQL 中,group by 执行隐式 order by ASC
如果您想添加一个 ORDER BY ASC,这非常好,因为结果已经排序。

但是如果你想 ORDER BY .. DESC MySQL 必须以相反的方式对结果集进行排序。

这个技巧会加快选择速度、减慢速度还是什么都不做

SELECT field1, field2 FROM atable 
GROUP BY -mydate   -- group by trick to force a `group by ... desc`
ORDER BY mydate DESC

我知道我可以为代码计时,但我希望更深入地了解手头的问题。
所有相关的索引自然而然就位了,因为没有索引的优化是愚蠢的。

最佳答案

根据我的测试,将任何排序修饰符添加到分组依据,如 - 以更改排序顺序会减慢速度。

但是您可以指定:

SELECT id, name, sum(amount) FROM customers GROUP BY id DESC

而且 MySQL 会愉快地按 DESC 顺序对结果进行排序,而不需要额外的 order by 子句。这不会像添加 - 那样产生额外的运行时间。

关于mysql - 强制 `group by` 排序 DESC 会加快代码速度还是减慢速度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7247063/

相关文章:

MySQL 离开加入子查询分组依据

mysql - 如何明智地获取数据消息?

mysql - 如何避免对带有 order by 语句的前缀查询的 mysql 复合索引进行文件排序?

php - 使用 PHP 将一条 MySQL 语句转化为多个 PHP 变量

php - Laravel 4 2个表之间的连接

MySql 在命令行中正确连接,但无法连接远程

php - Laravel 5.4 不一致的重复插入

mysql - Laravel 5.6 - GroupBy 不工​​作

hadoop - 在Hive中的许多表上执行有效的联接

entity-framework - Entity Framework 5.0 First 或 Group By Issue - 从 2.2 升级到 5.0 之后