Mysql 新表(带有派生的_数据)或SQL查询?

Mysql 新表(带有派生的_数据)或SQL查询?,mysql,database-design,derived-types,Mysql,Database Design,Derived Types,从最佳实践的角度来看,在我的数据库中使用其他表的派生数据字段创建一个新表,还是每次都使用SQL查询来计算它更好 详情: 更准确地说,我有一个表订单(id\u order,date,time,sum),我想跟踪每日利润,并在管理员每次从下拉菜单中选择时预览它们。我应该在每次他要求时进行SQL查询,还是创建一个新表,该表包含从其他表中获取其值的派生数据字段。对于简单的计算(a+b),请在选择中执行这些操作 对于定期计算结果的汇总(COUNT(sales)、SUM(revenue)),构建“汇总表”

从最佳实践的角度来看,在我的数据库中使用其他表的派生数据字段创建一个新表,还是每次都使用SQL查询来计算它更好

详情: 更准确地说,我有一个表
订单(id\u order,date,time,sum)
,我想跟踪每日利润,并在管理员每次从下拉菜单中选择时预览它们。我应该在每次他要求时进行SQL查询,还是创建一个新表,该表包含从其他表中获取其值的派生数据字段。

对于简单的计算(
a+b
),请在
选择中执行这些操作

对于定期计算结果的汇总(
COUNT(sales)、SUM(revenue)
),构建“汇总表”

例如,按
地区细分的每日计数、总计等。否则它将需要一个
分组,由
等组成

请注意,您可以从每日表计算每周或每月总计,因此不要构建更多的表

对于一千行来说,这并不重要;对于一百万或十亿人来说,它对“数据仓库”的性能至关重要


请记住,汇总表是不允许的(对于数据库纯粹主义者),因为它包含“冗余”数据。因此,您的策略应该避免让它失去同步。

我可以根据每种技术的优点和缺点来决定在以下情况下应该使用哪种技术:

汇总表:常用于数据仓库中,以提高选定查询的性能

  • 当汇总数据可重用时
  • 聚合查询不可用 由于有大量低粒度数据,因此性能良好 正在源表中处理
  • 直接查询

  • 当数据不能在多个时间/地点重复使用时

  • 用户需要每次执行的实时数据。汇总表将需要单独的加载逻辑,这将需要定期计划,这将引入滞后。此外,汇总表还需要根据源表中更新的最后一个数据作为批处理进行刷新

  • 两者的组合
    创建一个日级别的汇总表,该表在午夜刷新。选择此汇总表中的聚合数据,并将其与午夜后汇总表源表中的实时数据合并。类似地,汇总表可以具有周/月/年的粒度级别,或者根据传入数据的数量及其可重用性,将它们全部放在单独的表中

    您可以创建一个视图。对于这种情况,没有“最佳实践”。这取决于您的应用程序要求。