我有一张表格,其中包含每小时收集的一些统计数据。现在我想快速地获得每天/每周/每月/每年/总体的统计数据。从性能角度来看,最好的方法是什么?创建视图?函数?存储过程?还是普通表格,在更新数据时同时写入(我想避免后者)?我的当前想法是创建一个 view_day,它汇总小时数,然后创建 view_week 和 view_month 和 view_year,它们从 view_day 汇总数据,并且创建 view_total 从 view_year 汇总。这个方案好还是不好?
是的,拥有存储已聚合数据的表是一个好的实践。
而视图、存储过程和函数只会在大表上执行查询,这并不高效。
我们有一个类似的问题,我们使用主/从关系。我们在主服务器上进行事务数据(包括读和写操作,因为在我们的情况下,某些读操作需要超快速,并且不能等待事务复制),而从服务器则快速地复制数据,然后我们运行每个非事务查询,包括报告。
我强烈建议这种方法,因为如果您的数据足够细粒度以在报告层/应用程序中使用,则可以将其作为快速而简单的数据仓库实施。