MySQL:过滤组视图与内联选择

时间:2015-10-21 11:16:56

标签: mysql sql select view group-by

我只是对mysql(5.5)数据库上的汇总查询的性能感到好奇。

我有一张桌子:timestamp | category | value

现在我尝试

  1. 圆形时间戳到一小时5分钟
  2. 按时间戳过滤一天(非常有选择性)
  3. 具有舍入时间戳和类别的组并创建值的平均值
  4. 更便宜数据库服务器 1)动态构建sql或 2)来制作一个视图并在之后过滤当天?

    我的工作解决方案现在 1)但我更喜欢维护的观点 2)

    也许有人可以指出一个免费,快速的解决方案来比较两种可能性的成本。

    非常感谢提前和最好的祝福, 马丁

1 个答案:

答案 0 :(得分:1)

最有效的方法是过滤一天然后再完成工作。

这是这样的:

select date_format(timestamp, '%Y-%m-%d %H'), floor(minute(timestamp) / 12),
       category, avg(value)
from t
where timestamp >= '2015-01-01' and timestamp < '2015-01-02'
group by date_format(timestamp, '%Y-%m-%d %H'), floor(minute(timestamp) / 12)
order by min(timestamp);

请注意where子句。它使用不等式,因此您可以使用t(timestamp)上的索引。