我应该为多个分类行使用单个表吗?

时间:2015-05-29 19:47:04

标签: mysql sql database database-design

我想在我的网站上实现一些用户事件跟踪以进行统计等。 我考虑创建一个名为tracking_events的表,其中包含以下字段:

| id (int, primart) |
| event_type (int) |
| user_id (int) |
| date_happened (timestamp)|

此表格将包含大量行(假设至少每个页面视图是一个跟踪事件,并且该网站每天有 1,000 个访问者)。< / p>

使用event_type字段创建此表以区分基本不同但结构相同的行是不是一个好习惯?

或者为每种类型制作单独的表会更好吗? e.g:

pageview_events

| id (int, primart) |
| user_id (int) |
| date_happened (timestamp)|

share_events

| id (int, primart) |
| user_id (int) |
| date_happened (timestamp)|

以及5-10个表格。

(主要关注的是选择行WHERE event_type = ...)时的表现

感谢。

1 个答案:

答案 0 :(得分:1)

这取决于。如果你需要将它们分开,因为你只是单独查询它们,那么将它们分成两个表应该没问题。这使您无需存储额外的鉴别器列。

但是......如果你需要一起查询这些集合,就像它们是一个单独的表一样,使用一个鉴别器列将它们存储在一起要容易得多。

WHERE event_type=而言,如果只有两个不同的值,具有非常均匀的分布,那么只有该列的索引不会有多大帮助。如果大量查询将在该列上包含等式谓词,那么将该列作为多列索引中的前导列包括在内可能是可行的方法。

显然,如果这些表格大于&#34;那么您希望它们适合您的查询索引。