c# - 每次创建一张新表还是使用一张表更好?

标签 c# mysql sql wamp

我创建了一个程序,每天输出大约 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/

相关文章:

c# - RawPrinterHelper 不打印并且不引发错误?

c# - 在禁用的控件上显示工具提示

mysql - 在由换行符分隔的文本中查找文本

mysql - MySQL 临时表是共享资源吗?

c# - 减少来自 HttpPostedFileBase 的图像大小(物理和尺寸)然后转换为 base64

c# - 通用类型参数协变和多接口(interface)实现

sql - 计算一列中不同条目之间的距离

sql - 不使用DATALENGTH的sql表变量的大小

mysql - 使用 HAVING、GROUP BY 和 GROUP_CONCAT 对 SQL 进行计数

sql - 仅按人名过滤