我们正在重写现有系统,在主要库存表中,由于需要大约15-20%的整体情况需要这些列,因此会引入一些新列。这意味着80-85%的时间,这些列将为空。这些新的列数据类型包括decimal,varchar,smallint。
现在,我们有三个选择:
我认为第二种选择似乎最合适,但我根据您的经验需要意见
P.S。:计划基本上也将此数据库从单个实例移动到分片数据库。而sql实例是MySQL。
答案 0 :(得分:0)
我会选择option (2)
。我们将主表称为Table A
,将子表称为Table B
。
由于80%的时间,新列的值为NULL,因此Table A
与Table B
的关系可以是1-to-1
或1-to-0
。这意味着当值为NULL时,不需要将记录插入Table B
。
这会使Table B
相对较小,因此JOIN
操作不会产生太大的性能问题。
JSON列可以是另一个选项,但对其中每个字段的类型进行的检查不那么严格。