时间变化数据的视图与表的性能

时间:2012-03-06 12:44:46

标签: mysql views query-performance

我有一个新闻报道表,其中包括作者,发布时间和每篇文章的字数。该表相当大,包含超过一百万个条目,并且每天增加10,000个条目。

根据这些数据,进行统计分析,以确定特定作者在特定时间窗口中发布的单词总数(即每天每小时一个,每天一个,每个一个月份)与时间跨度的平均值相结合。以下是两个例子:

  • 作者A在2011-11-04发表3298个单词,两个月前(2011-09-04至2011-11-03)每天平均发表943.2个字。
  • 作者B在2012-01-21下午1点到2点之间发布了435个单词,并且在30天之前的下午1点到下午2点之间平均每天发布163.94个单词

目前的做法是通过cron-job在每个定义的时间窗口结束时启动一个脚本,它计算计数和平均值,并将其存储在每个时间窗口的单独表中(即每小时窗口一个) ,每天一个,每个月一个等...)。

总和和平均值的计算可以很容易地在SQL中完成,所以我认为Views可能是一个更优雅的解决方案,但我不知道对性能的影响。

View是否是上述问题的合适解决方案?

2 个答案:

答案 0 :(得分:1)

视图不等同于你的非规范化。

如果您要将聚合数字移动到其他地方,那么您需要付出一定的成本 - 为了保持数据的正确性,以及一定的好处,这在查询时要查看的数据要少得多。

一个视图可以避免每次运行时都不必过多考虑查询,但它仍然需要查看原始表中的大量数据。

虽然我不是非规范化的粉丝,因为你已经做过了,我觉得这个观点无济于事。

答案 1 :(得分:1)

我认为你可以使用物化视图。它并没有真正在MySQL中实现,但您可以使用表来实现它。 Look at

相关问题