0

晚上所有,

我正在尝试创建一个表,该表每天存储我的应用程序的一系列网络使用统计信息(微不足道的事情,例如没有新用户、总访问量等),我目前正在动态查询这些,但是我会现在想开始存储它们,部分是为了提高性能(将聚合查询的负载减少到单个查找),部分是为了允许历史分析。

我已经为表提出了以下基本模式(列会比这更多,只是为了给出一个想法)

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 来创建行吗?

如果我的设计假设有任何问题,请告诉我!

4

1 回答 1

0

这就是我最终这样做的方式

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 语句填充其他字段

也许不是最有效的方法,但它有效

于 2013-01-23T08:45:21.830 回答