我正在创建一个用于技术分析的数据库模式,比如销量最高的赢家、价格最高的赢家等。我在这里检查了问题 的答案,比如设计问题。从boe100的答案中得到提示后,我有一个几乎以它为模型的模式,因此:
Symbol - char 6 //primary
Date - date //primary
Open - decimal 18, 4
High - decimal 18, 4
Low - decimal 18, 4
Close - decimal 18, 4
Volume - int
现在这个包含 End Of Day (EOD) 数据的表在 3 年内将有大约 300 万行。后来当我获得/需要更多数据时,它可能是 2000 万行。
前端将询问诸如“在 X 天超过 Y 天给我价格涨幅最高的人”之类的请求。我认为该请求是较简单的请求之一,因此在时间上不会太昂贵。
但是像“给我过去 10 天的最大销量增长者,以前 100 天为基准”之类的请求可能会花费 10 到 100 倍的成本。这样的请求的结果将是一个浮点数,表示体积增长了多少倍等。
我有一个选择是为每个这样的结果添加一列。如果用户在 20 天内要求在 10 天内增加交易量,则需要另一列。此类列的总数很容易超过 100,特别是如果我开始将其他结果添加为列,例如 MACD-10、MACD-100。每个都需要自己的列。
这是一个可行的解决方案吗?
另一种选择是我将结果保存在缓存的 html 文件中并将它们呈现给用户。我在网络开发方面没有太多经验,所以对我来说看起来很乱;但我可能是错的(ofc!)。这也是一种选择吗?
让我补充一点,我正在/将使用 mod_perl 向用户呈现响应。mysql 数据库的大部分工作都是使用 perl 完成的。我希望有 1-2 秒的响应时间。