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

标签 sql mysql database database-design schema

我有一个名为 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/

相关文章:

mysql - 如何使用 npm mysql 将表达式与批量插入结合使用?

PHP ARRAY 根据日期范围显示数组中的分组数据

Android - 如何查看在我的应用程序中创建的 sql 数据库?我在 Eclipse 的 Android 模拟器上运行它

Mysql 按正则表达式匹配值分组

c# - OneDrive 下载 .sdf 文件后的本地数据库 "no format for SQL server Compact"

mysql - 如何在同一行中插入 id 的编号?

mysql - 来自多个可能组的底部 N

SQL-jaccard 相似度

mysql - Elasticsearch 与 MariaDB 的数据完整性问题

使用通配符的sql查询