我正在为我的应用程序开发一项新功能,我需要向数据库 DB2 中添加一些新数据。
我已经有 1个表,其中包含约50列,我将在这里将数据显示在屏幕上。我还需要20列来实现我的新功能。 我总是会每次获得1行,并且每次仅更新/插入1行 。
哪个是表现最好的人?在我已经拥有的表中创建30列,或创建一个新的30列“子表”。如果选项是2,那么更新数据的最佳方式是什么? 多个更新或具有联接的更新(如果可能)?
编辑: 更正:我的原始表格有54列
原始30列和20列的插入/更新频率。 我不知道您所说的频率是什么意思,但平均每10或20秒就会更新一次。 (编辑:如果我使用的是旧功能,我将始终更新所有原始30列。如果我使用的是新功能,则我需要更新所有50列(30个旧+ 20个新列)
是否同时更改了所有50列。 是的,所有列都立即更改
查询系统上的负载。 明白你的意思
存在索引(这会减慢更新速度)。 原始表中有4个索引
所有原始行是否都将具有额外的20列。 并非所有行都需要附加列
典型行长: 3个字符和3个小数
答案 0 :(得分:0)
性能差异可能不会有太大关系。需要有关您的环境的更多信息:
由于这是一项新功能,我可能会倾向于执行以下操作:
left join
结合在一起的视图。这种方法对现有表没有任何影响。
如果这行得通并且满足您的性能目标,那就好。如果您发现多个表比较麻烦,请稍后再考虑修改现有表。
答案 1 :(得分:0)
请确保您的“旧”功能可以容纳表格中存在的其他字段(例如,它不应包含“ select * from ...”)。
在现有表上将新字段定义为可为空或“默认情况下不为空”。
这应该比具有两个具有新功能的左连接表的性能更好,并且对旧功能的性能影响很小。
这也是一种可扩展的方法,即,如果您每个月添加一个具有几个新字段的新功能,那么您不希望最终从现在开始每年加入12个表。
当
时,我将使用两个表