我在汇总表的数据库设计中需要帮助。
我有一个非规范化表,用于存储用户的Web会话信息,例如来源,页面作者,用户位置,页面访问时间等。
我有某些分析查询,例如给定时间范围内的不重复用户数,用户会话数等,可以通过WHERE author = 'ABC'
或WHERE user_location = 'UK'
等各种过滤器进行服务。
由于在触发上述查询时要扫描的数据量非常高,因此我计划在实际表的顶部放置一个汇总表。但是,我在这样做时感到很困惑,因为我无法从聚合表中提供上述查询。这是因为当没有应用过滤器时,我看到计数出现明显的峰值。下面是我设计的表格。该表的粒度是每个位置/作者/来源的1条记录。
create table agg (
date_key bigint,
num_sess int,
author varchar(255),
location varchar(255),
source varchar(255)
);
我希望获得一些有关表设计的建议,以便拥有汇总视图。