需求是这样的,有一批监控流量的数据,一分钟一个点一天有1440个点。
要监控40个公司的主要流量。
每条线路有主副2条线用来做负载均衡。
然后就是要对30天的数据进行加权计算处理。
如果按一年来算的话就是1440*40*2*365=4200多万条数据
很显然这样的数据量是要分表的
如果按月来分的话那么一个表大致就有300多万的数据,如果按天来分就有10多万条数据。
首先不管怎么分吧!这里的问题是要加权计算,我是想直接利用sql里面的count sum avg之类的函数直接运算返回结果。这样就可以大大的简化程序的逻辑。
但是不知道跨表后,这样的sql语句怎么写。
这里给个例子吧(按月份的话)
data2011_1
和data2011_2
这2张表
里面有共同的字段 streamdata
我要前一张表取10跳,后一张表取20条
然后对这30条数据取平均值,请问,我该如何操作??
SELECT AVG(a.DistrictAutoID) FROM (
SELECT TOP 20 * FROM dbo.DialupClientUsers(NOLOCK)
WHERE 1= 1
UNION ALL
SELECT TOP 10 * FROM dbo.DialupClientUsers(NOLOCK)
WHERE 1=1
) a
不知道4200万条数据是否真有那么多
你想过用游标么,用存储过程呢?
请问下就算用游标怎么加快查询???
分表的策略在于能够将需要的和不需要的数据在物理上就分离
这样可以减少查询在不必要的数据上检索的时间
请问你说的游标和存储过程是什么思路??