【发布时间】:2021-12-14 12:27:45
【问题描述】:
我是 MySQL 新手,我尝试使用 MySQL 来存储我的股票数据。
我按照boe100 的回答作为参考:
我按如下方式创建表:
mysql> 描述 StockDailyQuotations;
| Field | Type | Null | Key | Default | Extra |
|---|---|---|---|---|---|
| ts_code | varchar(9) | NO | PRI | NULL | |
| trade_date | int(8) | NO | PRI | NULL | |
| open | decimal(6,2) | NO | NULL | ||
| high | decimal(6,2) | NO | NULL | ||
| low | decimal(6,2) | NO | NULL | ||
| close | decimal(6,2) | NO | NULL | ||
| change | decimal(6,2) | YES | NULL | ||
| pct_chg | float | YES | NULL | ||
| vol | float | YES | NULL | ||
| amount | float | YES | NULL |
10 rows in set (0.00 sec)
我总是通过以下两种方式使用表格:
(1)查询一只股票的历史数据,耗时0.01秒。
SELECT * FROM StockDailyQuotations WHERE ts_code='000001.SZ';
(2) 一天内搜索所有股票数据。需要 1.94 秒。
SELECT * FROM StockDailyQuotations WHERE trade_date='20201231';
参考中的答案说:“我们还有一个关于符号、日期和时间列的聚集索引。 我们可以在几毫秒内从服务器中获取数据。请记住,数据库大小几乎是 1 TB。”但就我而言,搜索 1 已经足够快了,我想加速类型 2 搜索。
我认为 ts_code 和 trade_date 的主键已经成为聚集索引。 我有什么误解吗?如何加快搜索速度 (2)?
如果这是一个愚蠢的问题,我深表歉意。感谢您的宝贵时间。
【问题讨论】:
-
什么是
amount? -
而vol是存货数量?
-
对不起,
amount是Stock turnover和vol是Stock trading volume。一个计算价格的总和,一个计算交易的总和。 -
先生,您是否建议使用int来存储
amount和vol? -
FLOAT如果其限制为大约 7 个 重要 位是可以的。