有许多"例外"的大桌子列

时间:2016-05-04 20:25:58

标签: mysql database-design

我有一个大表,有72列和数千万行财务数据,其中超过一半的内容(40列实际上)几乎始终是默认值。该表主要由批处理进程使用,这些列包含有关在边缘情况下在此实体上发生的异常事件的信息,并且主要是手动管理。

我们主要担心的是,当我们必须更改此表时,Liquibase更新现在需要几个小时。

用1到1关系中链接到的几个表替换这个结构是否有意义?我不想拥有数十个选项表,因为我们处于MySQL环境中,而LEFT JOIN可能会因为它们太多而变得昂贵。我知道这将意味着对模式进行非规范化,因为许多表将共享相同的标识符,但是所有周围的空列都不是更好。

2 个答案:

答案 0 :(得分:0)

我认为没有足够的回答这个问题,但如果它们是罕见的事件,那么问题是您需要多久访问一次。

将罕见事件分解为辅助表肯定会缩小您的innodb表,并且根据您的访问模式,通常可能会加快系统速度。当然,如果需要一起访问数据,那么你就会遇到问题,那里可能没有免费的午餐。

答案 1 :(得分:0)

是的,拆分表并使用1对1关系链接它们是有意义的。

如果您对左外连接过于担心,那么您始终可以使用主键插入所有表的行,然后根据业务方案更新列。通过这种方式,您可以等同连接所有表并降低性能影响。