在字段中存储求和值与表(MYSQL)上的sum()比较
我想知道在字段中存储求和值与在单独的表上执行在字段中存储求和值与表(MYSQL)上的sum()比较,mysql,sql,database,database-design,Mysql,Sql,Database,Database Design,我想知道在字段中存储求和值与在单独的表上执行sum()操作的利弊。例如,检索项目列表以及每个项目的购买数量。在这种情况下,可以有一个项目表和采购表,需要对其采购进行汇总 求和值的优点: 更简单、更快的SQL语句(不需要JOINs,例如Items.item\u id=Purchases.item\u id) sum()的优点是: 不必维护两种方法来获取可能不同步的值,因为它们需要更新和插入语句来更改它们(例如,在采购表中插入采购的和项目的采购计数字段的更新) 这取决于应用程序的性质和用途 您
sum()
操作的利弊。例如,检索项目列表以及每个项目的购买数量。在这种情况下,可以有一个项目
表和采购
表,需要对其采购进行汇总
求和值的优点:
- 更简单、更快的SQL语句(不需要
s,例如JOIN
)Items.item\u id=Purchases.item\u id
sum()的优点是:
- 不必维护两种方法来获取可能不同步的值,因为它们需要
更新和插入语句来更改它们(例如,在采购
表中插入采购的和项目的采购计数
字段的更新
)
这取决于应用程序的性质和用途
您应该计算或查看(对于现有应用程序)哪些查询更常见的用法。DML查询类型:
- 求和值方法:适用于更多
选择查询,用于浏览商品和显示有关商品的信息,例如常规电子商店
- 使用sum()方法:适用于更多
更新/插入
查询-例如,主要由管理门店库存的大型门店应用程序
这取决于应用程序的性质和用途
您应该计算或查看(对于现有应用程序)哪些查询更常见的用法。DML查询类型:
- 求和值方法:适用于更多
选择查询,用于浏览商品和显示有关商品的信息,例如常规电子商店
- 使用sum()方法:适用于更多
更新/插入
查询-例如,主要由管理门店库存的大型门店应用程序
对于这样的问题没有正确的答案。答案完全取决于数据的使用方式
两个极端。如果您很少查询数据,并且历史数据有很多更改,那么您的系统可能会在不需要时花费大量精力保持总和的一致性
另一方面,如果数据是“仅插入”,并且每个记录都使用总和重复检索,那么拥有总和可以节省工作
一般来说,倾向于使用更规范化的方法,即在查询时执行
sum()
,而不是将其作为业务规则进行维护。一个明显的优点是,随着时间的推移,值是一致的
第二个优势是分析可以变化。也许今天你需要物品数量。也许下周,你需要单位数量。美元数量。或者净差价。这些随着时间的推移而变化。试图提前捕获它们是一项挑战。这里的解决方案是将问题分成两部分。存储nor在一个“数据库”中存储恶意数据(没有神奇的总和)。将摘要存储在“数据集市”中,可以修改以满足最终用户的目标。数据集市将定期更新——每天或每周更新一次
带期间摘要的标准化基础数据是一种强大的体系结构,可以满足许多需求。但是,在某些情况下,在插入
/更新
/删除
上进行计算比在选择
上进行计算更为理想。因为这样的解决方案通常涉及更大的复杂性(实例的多个触发器),它必须在更规范化的解决方案上强烈地证明自己
这样的问题没有正确的答案。答案完全取决于数据的使用方式
两个极端。如果您很少查询数据,并且历史数据有很多更改,那么您的系统可能会在不需要时花费大量精力保持总和的一致性
另一方面,如果数据是“仅插入”,并且每个记录都使用总和重复检索,那么拥有总和可以节省工作
一般来说,倾向于使用更规范化的方法,即在查询时执行sum()
,而不是将其作为业务规则进行维护。一个明显的优点是,随着时间的推移,值是一致的
第二个优势是分析可以变化。也许今天你需要物品数量。也许下周,你需要单位数量。美元数量。或者净差价。这些随着时间的推移而变化。试图提前捕获它们是一项挑战。这里的解决方案是将问题分成两部分。存储nor在一个“数据库”中存储恶意数据(没有神奇的总和)。将摘要存储在“数据集市”中,可以修改以满足最终用户的目标。数据集市将定期更新——每天或每周更新一次
带期间摘要的标准化基础数据是一种强大的体系结构,可以满足许多需求。但是,在某些情况下,在插入
/更新
/删除
上进行计算比在选择
上进行计算更为理想。因为这样的解决方案通常涉及更大的复杂性(实例的多个触发器),它必须在更规范化的解决方案上强烈地证明自己