SQL 中的列逻辑

Column Logic in SQL

第一次发帖!我想在这里听取人们的意见。我正在收集过去 10 年的每日股票数据(所以大约 2500 行数据并不重要),但是我有超过 200 只股票(可能会随着时间的推移增加到 1000 只),每只股票大约有 30 个单独的字段。所以我们谈论的是一个 table,它最初有 6000 列,有一天会增长到超过 30000 列,但更恰当地说,也许一开始只有 6000-10000 列。我认识到 SQL 数据库可能不是最好的方法,有许多 'big data' 程序,如 mongodb、hadoop 等,但我从未使用过它们(仅 SQL)

任何人都可以阐明将其存储在 SQL 中的最佳方式。我知道每个 table 限制为 1024 列,有人建议我将其分成 10 多个单独的 table 吗?我对这对性能的影响感兴趣吗?

请注意,每只股票及其特征将与数据库中的所有其他股票互斥。

期待意见

我不明白为什么你有这么多不同的专栏。每个时间单位每个股票应该有一行。我会设想一个包含几十列的结构:

  • 股票代码
  • 日期(或date/time)
  • 每只股票大约 30 个指标

您似乎想要将内容存储在应该成行的列中。

这是一个大小合理的数据集,但可能只有几百万行和几千兆字节。数据库支持更大的数据集。

这么多栏是一种设计味道。

但是,MySQL 在一个 table 中最多只支持 4096 列。 CREATE TABLE statement 的文档摘录:

There is a hard limit of 4096 columns per table, but the effective maximum may be less for a given table and depends on the factors discussed in Section D.10.4, “Limits on Table Column Count and Row Size”.