我有一个非常通用的数据库问题。我在我的数据库中创建了一个表,用于跟踪整个网站的点击次数。我的表结构如下:
我遇到的问题是,对于大量用户设置和大量点击数据,此表中的行数在2000万到3000万之间。有没有不同的方法我可以组织这些数据,使按日期报告更容易?
SELECT P.TITLE, COUNT(DISTINCT(C.ID))
FROM PAGES P
INNER JOIN CLICKS C ON C.PAGEID = P.PAGEID
WHERE C.DATE >= 5/1/2013 AND C.DATE < 6/1/2013 AND C.PAGEID = XYZ
答案 0 :(得分:2)
它被称为尺寸设计。
您可以使用像Pentaho Aggregation Designer这样的工具来查找适当的聚合(例如按月按客户点击)。
然后使用像Mondrian + Saiku这样的OLAP工具,它可以动态地重写您的查询,以便在有利时使用聚合。
您应该使用带有整数智能键†的日期维度表(如20130621)。这样可以轻松按日期对访问事实进行分区。
Pentaho Data Integration可以轻松划分表格。
†这是唯一一次在尺寸设计中使用智能钥匙。
答案 1 :(得分:1)
Oracle Partitions能够很好地处理这个要求。