stock_id MEDIUMINT UNSIGNED -- 2 bytes
dy DATE -- 3 bytes
open, high, low, close -- see below
价格变得棘手。
FLOAT -- ~7 significant digits, 4 bytes; maybe good enough, might have roundoff
DECIMAL -- but how many decimal places; potentially bulky
INT -- not good enough
DOUBLE -- 8 bytes; overkill
一张桌子。时期。句号。
一般规则是不要有多个“相同”的表。这是一个维护问题,它可能会更慢。(常见的例外是 SaaS,例如 WordPress,它们只是使用具有“相同”20 个表的大量数据库。)
“35 个数据点……日期”——我很困惑。您要么拥有有关股票的信息,要么拥有多年前的每日价格。您是否只保存了 5 周的数据?或者你是什么意思?
随着数据集的发展,一张表中的 5K 行“很小”。
这也有每天的股票价格吗?有了这个,你可以得到数百万甚至数十亿行,大约 6 列。同样,我强烈建议所有价格都使用一张桌子。(加上所有代码的表格——同样是 5K 行,每行 30 列。)
我已经处理过这样的数据集,所以请走开。或者环顾四周;我已经在这个论坛和 stackoverflow.com 上回答了这样的问题
价格表会有类似的东西
价格变得棘手。
索引很重要,但首先要弄清楚插入和选择是什么样的。这些可能是最佳的:
一方面
stock_id
,会有很多行。不要将“许多”列用于“数组”;这很笨拙。也许您的日期是“季度”,如公司报告,而不是“每日”,如股票?5000 家公司有 8 年的季度报告,每行一行 == 单个表中的 160K 行。那仍然是一张“小”桌子。
再加上另一个有 5000 行的表,每个公司一个,包含名称、地址等。也就是说,属性不会改变。
是的,收入、余额、现金流等应该是表格中的单独列。假设这些值来自季度报告,那么它们将在我上面讨论的 160K 行表中。
具有几十列和几百万行的表没有问题(通常)。如果达到 100 列或 10 亿行,您可能会遇到不小的问题。