我有一个包含 260 列的旧表:4 列存储全局值,256 列存储参数。我需要扩展表以存储 512 个值。
最佳解决方案是创建一个仅包含三列(id、value、parent_id)的子表,以便根据需要存储尽可能多的参数。然而,这将需要对代码进行大量重写,并且我不确定性能。
另一个解决方案是简单地扩展表(使其更宽)以存储两倍的值。这是一个更安全的解决方案,因为我需要对代码进行最少的更改。此外,新表在未来 4 年内(至少)不会被修改,因此坚持使用它可能是有意义的。
只是为了提供更多信息,我的系统没有单元测试(因此我不愿意修改代码),不使用 ORM(因此我需要在代码写入和读取数据库中进行许多更改)并且 PM 担心第一个解决方案可能比现有解决方案慢。我预计表中将存储 10000 行,因此建议的子表将约为 5M 行。
任何人都可以证明我提出的设计实际上比当前设计更快吗?设计考虑不够(当前系统有效......)。是否还有其他好的(或坏的)理由来转向提议的设计?
最佳答案
您正在查看数据库仓储和雪花之间的关键。
如果您要在这张表中处理大量读取和大量写入,那么您需要关注不同的事情。
将条目分解到“子表”后将其插入数据库现在将需要 512 次插入,而不是 1 次。但是,编辑单个参数将修改一小部分区域,不会影响其他 511 区域。
我个人认为512列有点过多,但我会考虑是否有其他关系可以变成逻辑表,而不是“我需要什么值就放在这里”的“匿名表”。
对于所有数据库事物,您能做的最好的事情就是测试它。只有您知道该表将如何最常用,并且编写插入 1M 行和读取 1M 次的测试非常容易。
关于sql - 我应该如何在旧数据库中存储 500 个键值对?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21679172/