id 每支股票有个对应的编号,
trade_date是交易日期,
open high low close分别代表开盘价,最高价,最低价,收盘价。
这样定义表结构,我们要查询某天的价格非常方便,给定id和日期就能查出来,但是有个问题就是存到postgreSQL后, 记录会非常多,假设全球有10万只股票,我们存储从1990到今天的数据,那么中间的日期数量就是每支股票有大概12000条记录。总记录数就是有12亿条记录,对于关系型数据库数据上亿后,查询性能会下降比较明显, 有什么办法可以把记录数减少一些呢? 我们可以尝试一下Array来存储下, 看这样的表结构
postgres=# insert into market_price_month_array values('0P00000001',2023,2,'{2.11,2.12,2.13,2.14,2.15,2.16,2.17,2.18,2.19}','{4.11,4.12,4.13,4.14,4.15,4.16,4.17,4.18,4.19}','{1.11,1.12,1.13,1.14,1.15,1.16,1.17,1.18,1.19}','{3.11,3.12,3.13,3.14,3.15,3.16,3.17,3.18,3.19}');
INSERT 0 1
postgres=# select * from market_price_month_array;
postgres=# update market_price_month_array set open[19] = 2.19, high[19] = 4.19, low[19]= 1.19, close[19]=3.19 where id = '0P00000001' and year = 2023 and month = 2;
UPDATE 1
postgres=# select * from market_price_month_array;