MySQL 5:这与我的GROUP BY字段的顺序有关系吗?

问题描述:

Peeps,MySQL 5:这与我的GROUP BY字段的顺序有关系吗?

我在我的MySQL查询中有几个聚合/计算字段。我的GROUP BY子句是动态生成的,具体取决于用户在Web表单中选择的选项。好奇的是,如果GROUP BY子句中列出的字段的顺序可以对计算产生任何影响(像SUM,AVERAGE等东西)

谢谢!

+0

当你尝试两个不同的版本时,你测量了什么? – 2009-07-08 01:43:42

+0

请确保检查[mysql-optimization-guide](http://dev.mysql.com/doc/refman/5.0/en/group-by-optimization.html)上的group by的优化规则。作为下面的答案之一,状态顺序会影响mysql中的索引查找速度。 – trcarden 2011-12-09 11:13:04

不,这不应该的问题

如果您正在使用WITH ROLLUP这会事,否则,它不应该。

+0

请参阅下面的内容,了解为什么这对索引使用会有很大影响。 – Artem 2010-07-15 16:15:19

其实,我刚刚尝试过解决我遇到的一个问题,结果证明索引使用很重要。

假设我们有一个包含两列(城市,州)的Customers表的二级索引 - 并且它们在索引中以此顺序指定。

SELECT COUNT(*)FROM Customers GROUP BY城市,州 EXPLAIN显示它使用索引。

但是......

SELECT COUNT(*)FROM客户GROUP BY州,市 EXPLAIN显示,它不使用索引。

这是在带有InnoDB表的MySQL 5.1上。

+0

请详细说明一下:你说它确实很重要,但是你不会说如何。你简直是一种表现影响,但_results_有什么不同?我认为他们不是(除非你使用'WITH ROLLUP',正如@gahooa所指出的那样)。 – 2013-08-14 08:47:39