让我们考虑下表。
表格
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
提前致谢。
答案 0 :(得分:0)
检查性能的最佳方法是使用您的数据在您的硬件上。
但是,MySQL使用文件排序算法实现group by
。此算法通常不利用索引,尤其不适用于您的情况。因此,两个查询的工作将是处理聚合。
其他操作很简单。因此,引擎是否进行一次或两次计算确实不会与整体计算相关 - 除非您只有少量行。而且,在这种情况下,性能并不是真正的问题。