我有一个名为 Billing
的表,它基本上是一张收据(用于不同类型的交易)。该应用程序具有一项功能,您可以创建新费用(好吧,除了税金和其他常量之外的所有费用)。由于会有动态数量的费用,我们决定将账单费用存储在具有 JSON 结构的单个文本字段中。所以 Charges
列包含如下内容:
{"CrateFee":50,"DeliveryFee":90,"PackagingFee":20}
{"DeliveyFee":90,"ServiceCharge":200}
我们的替代方案是为这些费用创建一个单独的表,其结构如下:
Charges
BillingId | ChargeName | ChargeValue
1 CrateFee 50
1 DeliveryFee 90
1 PackagingFee 20
2 DeliveryFee 90
2 ServiceCharge 200
我们决定不使用第二种方法,因为它会在一天内填充数万行(估计一天内大约有 1000 个事务)。我知道如果我们使用第一个,我们可以对数据做的事情会受到限制,所以我真的很想推出单独的表格方法。但是我对数据库的扩展、优化等一无所知,所以我需要一些帮助。
用第二种方法可以吗?这将如何影响性能?还有其他选择吗?
最佳答案
第一个实现可能更容易将数据存储在一行中,但您正在向整个世界的伤害敞开心扉。
通过在字段上正确使用索引,您应该不会遇到重大问题,所以我推荐第二种方法。
此外,在稍后的某个阶段,您可以尝试实现归档,这也有助于调整第二个表的大小。
关于sql - 将字段存储为单一文本类型 JSON 字符串与拆分到单独表的性能影响,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1926735/