【发布时间】:2015-05-29 07:41:13
【问题描述】:
我有一张如下表:
- PK,
- 日期,
- 小时 (0-23),
- 交易ID(外键),
- 价格,
- 音量
每笔交易都有 3 年的数据(365x24x3 = 26280 小时)。而且,我目前有 5000 个(并且还在增长)。
我正在尝试计算每小时(每个 26280)的加权平均值(SUM(P_Transaction1xV_Transaction1+ P_Transaction2xV_Transaction2+ … + P_Transaction5000xV_Transaction5000)/ SUM(V_Transaction1+ V_Transaction2+…+ V_Transaction5000)。
我们尝试了以下选项,但无法显着减少运行时间。
选项 1:
数据表: PK 日期 交易 ID(外键) 价格 1、价格 2、……、价格 24 第 1 卷,第 2 卷,……第 24 卷
索引列:交易 ID、日期 使用了存储过程。
选项 2:
数据表1: PK 日期 小时 (0-23) 交易 ID(外键) 音量
数据表2: PK 日期 小时 (0-23) 交易 ID(外键) 价格
索引列:交易 ID、日期、小时 使用了存储过程。
选项 3: 正如我一开始解释的那样。
我想知道在数据模型、索引等方面是否有更好的方法......为了尽可能提高性能。
【问题讨论】:
-
选项 1,有 24 个价格栏和 24 个成交量栏,一团糟。避免它!
-
您使用的是哪个 DBMS!?
-
Microsoft SQL Server 2008 企业版(64 位)
-
您是否尝试将其表达为单个 SQL 而不是存储过程?有时它可以更快。或者,您可以尝试将临时表用于中间数据并将作业拆分为多个部分,这可能会更快。我会从一个 SQL 开始,看看会发生什么。
标签: sql sql-server performance procedure