这是跟踪日常观点的好方法吗?

时间:2011-12-29 08:39:01

标签: mysql ruby-on-rails-3 database-design

我有一个跟踪每日视图的视图表。我们使用此表来显示每日和每月折线图。该表看起来像:

id, post_id, day, month, year, count. 

对于每个帖子,这意味着有365个视图(一年中)。这意味着如果我有1,000个帖子。我会在views表中有365,000个条目。我们有几个帖子和数量。有时每天10个帖子。

我在post_iddaymonthyear上添加了索引。

我担心这会导致数据库性能问题,因为表格呈指数级增长?我应该担心吗?或者我应该没事?

1 个答案:

答案 0 :(得分:3)

我认为你为自己制造的东西比你需要的更难。你为什么不只是这样定义一个表:

create table daily_views
( post_id int not null
, view_date date not null
, count int not null
, primary key (post_id, view_date)
, foreign key (post_id) references post(post_id)
)

除非您有一个引用daily_views表的子表,否则在daily_views上拥有自动增量ID没有特别的好处。事实上,你只是浪费空间来获得一个比自然键(post_idview_date更有用的索引。

将日,月和年分成单独的列是没有好处的。如果您将日期存储为单个字段,则效率更高,您可以轻松地在任何日期范围内进行汇总,而不仅仅是月,日和年的日期。

通过使用此表格格式,您将优化使用的空间和对记录的访问,这将减轻您对性能和可伸缩性的任何担忧。就您生成的行数而言,我认为您不必担心这一点。许多数据库都有数百万行的表。您只想确保每一行尽可能紧凑。