在字段中存储求和值与表(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语句(不需要
    JOIN
    s,例如
    Items.item\u id=Purchases.item\u id
sum()的优点是:

  • 不必维护两种方法来获取可能不同步的值,因为它们需要
    更新
    插入
    语句来更改它们(例如,在
    采购
    中插入采购的
    项目的
    采购计数
    字段的
    更新

这取决于应用程序的性质和用途

您应该计算或查看(对于现有应用程序)哪些查询更常见的用法。DML查询类型:

  • 求和值方法:适用于更多
    选择
    查询,用于浏览商品和显示有关商品的信息,例如常规电子商店
  • 使用sum()方法:适用于更多
    更新/插入
    查询-例如,主要由管理门店库存的大型门店应用程序

这取决于应用程序的性质和用途

您应该计算或查看(对于现有应用程序)哪些查询更常见的用法。DML查询类型:

  • 求和值方法:适用于更多
    选择
    查询,用于浏览商品和显示有关商品的信息,例如常规电子商店
  • 使用sum()方法:适用于更多
    更新/插入
    查询-例如,主要由管理门店库存的大型门店应用程序

    • 对于这样的问题没有正确的答案。答案完全取决于数据的使用方式

      两个极端。如果您很少查询数据,并且历史数据有很多更改,那么您的系统可能会在不需要时花费大量精力保持总和的一致性

      另一方面,如果数据是“仅插入”,并且每个记录都使用总和重复检索,那么拥有总和可以节省工作

      一般来说,倾向于使用更规范化的方法,即在查询时执行
      sum()
      ,而不是将其作为业务规则进行维护。一个明显的优点是,随着时间的推移,值是一致的

      第二个优势是分析可以变化。也许今天你需要物品数量。也许下周,你需要单位数量。美元数量。或者净差价。这些随着时间的推移而变化。试图提前捕获它们是一项挑战。这里的解决方案是将问题分成两部分。存储nor在一个“数据库”中存储恶意数据(没有神奇的总和)。将摘要存储在“数据集市”中,可以修改以满足最终用户的目标。数据集市将定期更新——每天或每周更新一次

      带期间摘要的标准化基础数据是一种强大的体系结构,可以满足许多需求。但是,在某些情况下,在
      插入
      /
      更新
      /
      删除
      上进行计算比在
      选择
      上进行计算更为理想。因为这样的解决方案通常涉及更大的复杂性(实例的多个触发器),它必须在更规范化的解决方案上强烈地证明自己


      这样的问题没有正确的答案。答案完全取决于数据的使用方式

      两个极端。如果您很少查询数据,并且历史数据有很多更改,那么您的系统可能会在不需要时花费大量精力保持总和的一致性

      另一方面,如果数据是“仅插入”,并且每个记录都使用总和重复检索,那么拥有总和可以节省工作

      一般来说,倾向于使用更规范化的方法,即在查询时执行
      sum()
      ,而不是将其作为业务规则进行维护。一个明显的优点是,随着时间的推移,值是一致的

      第二个优势是分析可以变化。也许今天你需要物品数量。也许下周,你需要单位数量。美元数量。或者净差价。这些随着时间的推移而变化。试图提前捕获它们是一项挑战。这里的解决方案是将问题分成两部分。存储nor在一个“数据库”中存储恶意数据(没有神奇的总和)。将摘要存储在“数据集市”中,可以修改以满足最终用户的目标。数据集市将定期更新——每天或每周更新一次

      带期间摘要的标准化基础数据是一种强大的体系结构,可以满足许多需求。但是,在某些情况下,在
      插入
      /
      更新
      /
      删除
      上进行计算比在
      选择
      上进行计算更为理想。因为这样的解决方案通常涉及更大的复杂性(实例的多个触发器),它必须在更规范化的解决方案上强烈地证明自己