首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于偶尔情况的新列:新列或单独的表或json列

用于偶尔情况的新列:新列或单独的表或json列
EN

Stack Overflow用户
提问于 2018-03-04 06:43:40
回答 1查看 27关注 0票数 0

我们正在重写一个现有的系统,在主目录表中,一些新的列正在被引入,因为需要这些列在大约15-20%的整体案例中。这意味着80%-85%的时间,这些列将为null。这些新的列数据类型将包括十进制、varchar、smallint。

现在,我们有三个选择:

  • 如上文所述,包括新列,并让80%的行在这些列中具有空值。在类似的5-6列中,有80%的时间存在空值的缺点。
  • 为这些列拥有单独的表,并仅在需要这些列时才与主表连接。这种连接只会在20%的情况下发生,因为它将由API请求驱动。这种方法有联接的缺点。
  • 对于不需要查询的字段,在现有表中添加json列;对于查询字段,添加单独的列。

我认为第二个选择似乎是最合适的,但我需要根据你的经验提出意见。

P.S.:我们的计划基本上也是将这个数据库从单个实例移动到共享数据库。并且sql实例是MySQL。

EN

回答 1

Stack Overflow用户

发布于 2018-03-04 07:15:02

我将和option (2)一起去。让我们将主表称为Table A,子表称为Table B

由于80%的时间,新列的值为空,所以Table ATable B的关系可以是1-to-11-to-0。这意味着当值为NULL时,不需要将记录插入到Table B中。

这使得Table B相对较小,因此JOIN操作不应该带来太多的性能问题。

JSON列可以是另一种选择,但对于其中每个字段的类型,检查不那么严格。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49092748

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档