存储字段作为单个文本类型JSON字符串与拆分到单独表的性能影响

put*_*uan 0 mysql sql database schema database-design

我有一个叫做的表Billing,它基本上是一个收据(用于不同类型的交易).该应用程序具有一项功能,您可以创建新的费用(除税和其他常量以外的所有费用).由于会有一定数量的动态费用,我们决定将结算费用存储在具有JSON结构的单个文本字段中.所以该Charges列包含这样的东西:

{"CrateFee":50,"DeliveryFee":90,"PackagingFee":20}
{"DeliveyFee":90,"ServiceCharge":200}
Run Code Online (Sandbox Code Playgroud)

我们的替代方案是为这些费用创建一个单独的表格,具有以下结构:

Charges
BillingId | ChargeName |  ChargeValue
1           CrateFee      50
1           DeliveryFee   90
1           PackagingFee  20
2           DeliveryFee   90
2           ServiceCharge 200
Run Code Online (Sandbox Code Playgroud)

我们决定采用第二种方法,因为它会在一天内被数万行填充(估计一天内有大约一千笔交易).我知道如果我们使用第一个数据,我们将对数据的处理能力有限,所以我真的想推动单独的表方法.但是当我谈到数据库时,我不知道扩展,优化等等,所以我需要一些帮助.

可以使用第二种方法吗?这将如何影响性能?还有其他选择吗?

Adr*_*der 5

第一个实现可能会更容易将数据存储在一行中,但是您将自己打开一个受伤整个世界.

通过在字段上正确使用索引,您不应该有重大问题,所以我建议第二种方法.

此外,在稍后阶段,您可以尝试实施归档,这也应该有助于第二个表的大小.

  • +1:只是对逗号分隔的列表说"不"=) (4认同)