晚上好,
我正在尝试创建一个表,该表存储了一系列关于我的应用程序每天的web使用情况的统计数据(琐碎的事情,如no。新用户,总访问量等),我目前正在动态地查询这些数据,但是我现在想要开始存储它们,一方面是为了性能(将聚合查询的负载减少到单个查找),另一方面是为了允许历史分析。
我已经提出了以下表的基本模式(将有比这更多的列,只是给一个想法)
create table web_stats(
web_stat_id bigserial primary key,
date_created timestamp not null default now(),
user_count integer not null,
new_user_count integer not null
);
comment on table web_stats is 'Table stores statistics on web usage';
现在,我很高兴创建查询来填充表(我使用Quartz调度器每天运行查询)
然而,我不太确定回顾性地填充过去日期表的最佳方法,我应该使用INSERT语句自应用程序上线(大约2年前)以来每天创建一个空白行,然后使用UPDATE来填充空白行吗?或者这能一下子完成吗?有人能提供一些SQL来创建行吗?
如果我的设计假设有任何错误,请告诉我!
我就是这么做的
INSERT INTO web_stats (date_created)
SELECT DATE('2011-08-20')+x.id
FROM generate_series(0,521) AS x(id);
其中2011-08-20是应用程序上线的日期,521是从现在到那时的天数
这将创建一个空表,这样我就可以使用date_created字段来填充其他字段,使用UPDATE语句
也许不是最有效的方法,但它是有效的