我创建了一个程序,每天输出大约 300,000 行数据并存储在数据库中。然而,我对 SQL 有点陌生,我想知道是否更好的做法是每天以编程方式创建一个新表,并以日期作为后缀,从而每天创建一个新的 300,000 行表,或者将它们全部存储在一个表中表并每天插入它们并使用 DATETIME 列来处理数据。
我倾向于第二种选择,但是我不确定由于每天添加 300,000 行,在一段时间后是否会达到行数“上限”。每年超过 1 亿行数据,MySQL 数据库可以处理吗?
最佳答案
对数据库表中可以存储的行数的唯一真正的硬限制是其主键的大小。
例如如果您的主键是 int,则它使用 4 个字节,并且可以达到 45 亿行的数量级。如果你使用 bigint......那就很多了。
在我看来,最好将它们全部放在一张表中,只需使表尽可能精简并基于性能即可。
例如如果您可以在带有日期时间戳的长日期上使用短格式的数据,那就这样做。 如果您可以轻松地处理 45 亿行,请使用 int (每行节省 4 个字节)。
表中最好不要有任何 Guid,尤其是不要作为主键。如果可能,请使用一个主键列。
我确信其他人可以提供更多资金。
除了主键大小之外,还有其他限制。例如。数据库文件所在的驱动器上有多少物理空间。
关于c# - 每次创建一张新表还是使用一张表更好?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26920999/