Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL:过滤器组视图与内联选择_Mysql_Sql_Select_View_Group By - Fatal编程技术网

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

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)这个想法 或者,也许有人可以给我指出一个

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

我有一个表:
timestamp | category | value

现在我试着

  • 将时间戳舍入为5分钟1小时
  • 按时间戳筛选一天(非常有选择性)
  • 使用四舍五入的时间戳和类别分组,并对值进行平均
  • 数据库服务器动态构建sql的成本是更低的还是更便宜的还是更便宜的还是2)更便宜的方法来创建一个视图,该视图将根据该视图进行分组,并在日后进行过滤

    我现在的工作解决方案是1),但从维护的角度来看,我更喜欢2)这个想法

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

    非常感谢,并致以最良好的问候,
    马丁

    最有效的方法是过滤一天,然后做这项工作

    这是这样的:

    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被文件排序控制得如此之大,以至于我认为一点数据算法——不管是这样还是那样——都不会有什么不同。