我有一张表格如下:
每笔交易都有3年的数据(365x24x3 = 26280小时)。而且,我现在有5000个(并且还在增长)。
我正在尝试计算每小时的加权平均值(SUM(P_Transaction1xV_Transaction1 + P_Transaction2xV_Transaction2 + ... + P_Transaction5000xV_Transaction5000)/ SUM(V_Transaction1 + V_Transaction2 + ... + V_Transaction5000)(每个26280)。
我们尝试了以下选项,但无法显着缩短运行时间。
选项1:
数据表: PK 日期 交易ID(外键) 价格1,价格2,...,价格24 第1卷,第2卷,...第24卷
索引列:交易ID,日期 使用存储过程。
选项2:
数据表1: PK 日期 小时(0-23) 交易ID(外键) 体积
数据表2: PK 日期 小时(0-23) 交易ID(外键) 价
索引列:交易ID,日期,小时 使用存储过程。
选项3: 正如我在开始时所解释的那样。
我想知道对于数据模型,索引等等是否有更好的方法。为了尽可能地提高性能。
答案 0 :(得分:2)
由于您要查找“每小时”的汇总数,因此您的起点应为group by date, hour
select date, hour, sum(price * volume) / sum(volume)
from table
group by date, hour
索引(日期,小时)或至少日期会有所帮助。