MySQL:过滤器组视图与内联选择
我只是对mysql(5.5)数据库上的汇总查询的性能感到好奇 我有一个表:MySQL:过滤器组视图与内联选择,mysql,sql,select,view,group-by,Mysql,Sql,Select,View,Group By,我只是对mysql(5.5)数据库上的汇总查询的性能感到好奇 我有一个表:timestamp | category | value 现在我试着 将时间戳舍入为5分钟1小时 按时间戳筛选一天(非常有选择性) 使用四舍五入的时间戳和类别分组,并对值进行平均 数据库服务器动态构建sql的成本是更低的还是更便宜的还是更便宜的还是2)更便宜的方法来创建一个视图,该视图将根据该视图进行分组,并在日后进行过滤 我现在的工作解决方案是1),但从维护的角度来看,我更喜欢2)这个想法 或者,也许有人可以给我指出一个
timestamp | category | value
现在我试着
马丁最有效的方法是过滤一天,然后做这项工作 这是这样的:
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);
选择日期格式(时间戳,%Y-%m-%d%H')、楼层(分钟(时间戳)/12),
类别,平均值(值)
从t
其中时间戳>='2015-01-01'和时间戳<'2015-01-02'
按日期分组\u格式(时间戳,%Y-%m-%d%H'),楼层(分钟(时间戳)/12)
按分钟订购(时间戳);
注意
where
子句。它使用了一个不等式,所以你可以在t(timestamp)
上使用索引这正是我现在正在做的,谢谢你@gordon,作为一个信息,我将时间戳转换为unix时间戳(从它的实际日期开始),在它上面做一个模,然后再转换回来。我觉得这对小组来说是更好的表现。@martin。group by被文件排序控制得如此之大,以至于我认为一点数据算法——不管是这样还是那样——都不会有什么不同。