mysql - 新表(带有衍生数据)或 SQL 查询?

标签 mysql database-design derived-types

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

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

最佳答案

对于简单的计算 (a+b),请在 SELECT 中进行。

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

例如,按地区分割的每日计数、总计等。否则需要GROUP BY等。

请注意,您可以根据每日表计算每周或每月总计,因此无需构建更多表。

参见my Summary Tables blog .

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

请记住,汇总表(对于数据库纯粹主义者来说)是禁忌,因为它保存“冗余”数据。因此,您的策略应该避免让它不同步。

关于mysql - 新表(带有衍生数据)或 SQL 查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32298700/

相关文章:

mysql - 需要进行 JOIN 验证的 SQL 查询

mysql - 查询显示 2010 年每个月的总利润按降序排列?

mysql - 将所有相似的文本分组到不同的组中

数据库设计 - 外键与主键相同?

postgresql - 如何在一个表中创建多个序列?

c++ - 如何让一个类包含不同的类类型并调用持有的那些对象的成员?

mysql - MySQL 中匹配字符串的一部分

mysql - 在MySQL中使用外键从另一个表的列中选择数据

variables - 在 Fortran 中命名派生类型的良好实践

c - Fortran 派生类型包含可从 C 访问的指针