MySQL 5:这与我的GROUP BY字段的顺序有关系吗?
问题描述:
Peeps,MySQL 5:这与我的GROUP BY字段的顺序有关系吗?
我在我的MySQL查询中有几个聚合/计算字段。我的GROUP BY子句是动态生成的,具体取决于用户在Web表单中选择的选项。好奇的是,如果GROUP BY子句中列出的字段的顺序可以对计算产生任何影响(像SUM,AVERAGE等东西)
谢谢!
答
不,这不应该的问题
答
其实,我刚刚尝试过解决我遇到的一个问题,结果证明索引使用很重要。
假设我们有一个包含两列(城市,州)的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
当你尝试两个不同的版本时,你测量了什么? – 2009-07-08 01:43:42
请确保检查[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