我需要存储股票价格历史记录。以下是要求,
有多种视图类型,
表格设计
HourlyStockPrice
symbol
datetime
price
DayStockPrice
symbol
date
high
low
MonthStockPrice
symbol
date
high
low
由于数据库将有数百万条记录,我决定将信息存储在单独的表中,因此检索速度会更快。这样好吗?或者我只需要使用单个表,根据需要,必须查询和处理数据。下面是单表模式,
StockPrice
symbol
datetime
high
low
请告知。
答案 0 :(得分:1)
您还没有提到这些表如何填充。我的解决方案是在主要股票价格表上设置一个触发器,用于填充单个历史表,其中包含插入的日期时间和价格前后的更新。
您应该可以使用历史记录表上的索引视图完成所有其余操作,将更新的(日期时间)字段分解为小时,天,月。
如果您不熟悉索引视图,则它们只是您可以编制索引的视图。索引数据与视图而不是表保持一致。
小时示例可能类似......
CREATE VIEW ivHourlyStockPrice
WITH SCHEMABINDING
AS
BEGIN
SELECT symbol, convert(varchar(255),updated,106) as Day, select convert(char(2), updated,108) as Hour, AfterPrice as CurrentPrice
FROM StockHistory
END
CREATE UNIQUE CLUSTERED INDEX idx_ivHourlyStockPrice ON ivHourlyStockPrice(symbol,Day,Hour,CurrentPrice)
然后做一些像......
select Day, Hour, CurrentPrice
from ivHourlyStockPrice
where Day='03 Jun 2014'
and symbol='xxx'
会非常快。