求教高效率的SQL解决方案
需求如下:
现在有一个从实时数据库取数的数据表Dat_Tag,结构和数据大致如下
Tag_Id(位号Id),Reading(读数),Get_Time(取数时间)
XXXX_001 10.00 2011-07-05 12:00
YYYY_001 120.00 2011-07-05 12:00
ZZZZ_001 3.00 2011-07-05 12:00
XXXX_001 11.00 2011-07-05 12:05
YYYY_001 110.00 2011-07-05 12:05
ZZZZ_001 4.00 2011-07-05 12:05
......
每5分钟采集一次数据。
要呈现的数据是经过计算的数据,如:Val=(XXXX_001+YYYY_001)*ZZZZ_001
也要求每5分钟计算一个数据点。
我们准备用存储过程来完成计算,将结果保存到展现表中。
但是在计算的时候遇到问题,上面的公式我们用SQL实现如下:
select ((select reading from Dat_Tag where Tag_Id='XXXX_001' and Get_Time='2011-07-05 12:00')+(select reading from Dat_Tag where Tag_Id='YYYY_001' and Get_Time='2011-07-05 12:00'))*(select reading from Dat_Tag where Tag_Id='YYYY_001' and Get_Time='2011-07-05 12:00') from dual;
这样做效率很低,在数据量很大的情况下效率就更低了。
哪位高人指点一下,如何做比较好.