分时间段查询数据

rabbit_zizhu 2011-11-27 06:59:42
现在绘制折线图。
查询和显示折线图的参数有查询时间范围,查询粒度,和显示粒度。

查询时间分为按天,按周,按月,按年。
查询粒度有5分钟,15分钟,30分钟,1小时等等。
显示粒度有1小时,2小时。一天,一周,等等。

假设现在查询时间是当天,查询粒度是5分钟,显示粒度是1小时。
查询的sql如何将一天按照5分钟一个粒度来查询呢。

我现在是在sql中进行时间分段查询,时间粒度是5分钟一次:
//第一个5分钟查询语句
SELECT NVL(MAX(DiskSize), 0) KPI_VALUE, KPI_DATE
FROM (SELECT DiskSize,
CASE
WHEN KPI_DATE >=TO_DATE('2011-11-24 00:00:00', 'YYYY-MM-DD HH24:MI:SS') AND
KPI_DATE <=TO_DATE('2011-11-24 00:05:00', 'YYYY-MM-DD HH24:MI:SS') THEN '2011-11-24 00:00:00'
END AS KPI_DATE
FROM NM_DATA.KPI_106
WHERE NE_NODE_ID = 251006
AND KPI_DATE >=TO_DATE('2011-11-24 00:00:00', 'YYYY-MM-DD HH24:MI:SS')
AND KPI_DATE <=TO_DATE('2011-11-24 00:05:00', 'YYYY-MM-DD HH24:MI:SS')
AND VolumnName = 'E:')
GROUP BY KPI_DATE
UNION
//第二个5分钟查询语句
UNION
//第三个5分钟查询语句
UNION
。。。

但是这样查,sql执行效率很慢。假如我查询一周的数据,按照5分钟查询,sql执行的就更慢了。
请问有什么好的方式进行分时间段查询吗?
...全文
165 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
rabbit_zizhu 2011-12-27
  • 打赏
  • 举报
回复
自己顶下。继续~~
luminance 2011-12-07
  • 打赏
  • 举报
回复
可以建个新表a,用存储过程在程序运行的空闲期(大半夜)先循环执行,然后,再用sql从a 表中查询,会快很多;另外每5分钟内的数很多的话,可以考虑对条件字段建分区,也会提高性能

4,328

社区成员

发帖
与我相关
我的任务
社区描述
多媒体/设计 Flex
社区管理员
  • Flex
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧