在MySQL中进行日常组的性能比较

时间:2016-05-16 12:01:32

标签: mysql sql group-by

让我们考虑下表。

表格

ID
epoch_time_in_millis
counter

查询#1:

SELECT 
DATE_FORMAT(FROM_UNIXTIME(epoch_time_in_millis/1000),"%Y-%m-%d") date,
SUM(counter) totalCount
FROM my_table
GROUP BY date

查询#2:

SELECT 
(epoch_time_in_millis DIV 86400000 ) * 86400000 ms,
SUM(counter) totalCount
FROM my_table
GROUP BY (epoch_time_in_millis DIV 86400000) * 86400000;

我的问题是: 上述两个查询是否会显示出任何性能差异?

如果是,请让我理解原因。 如果没有让我理解为什么。 :P

提前致谢。

1 个答案:

答案 0 :(得分:0)

检查性能的最佳方法是使用您的数据在您的硬件上。

但是,MySQL使用文件排序算法实现group by。此算法通常不利用索引,尤其不适用于您的情况。因此,两个查询的工作将是处理聚合。

其他操作很简单。因此,引擎是否进行一次或两次计算确实不会与整体计算相关 - 除非您只有少量行。而且,在这种情况下,性能并不是真正的问题。