我想在我的网站上实现一些用户事件跟踪以进行统计等。
我考虑创建一个名为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 = ...
)时的表现
感谢。
答案 0 :(得分:1)
这取决于。如果你需要将它们分开,因为你只是单独查询它们,那么将它们分成两个表应该没问题。这使您无需存储额外的鉴别器列。
但是......如果你需要一起查询这些集合,就像它们是一个单独的表一样,使用一个鉴别器列将它们存储在一起要容易得多。
就WHERE event_type=
而言,如果只有两个不同的值,具有非常均匀的分布,那么只有该列的索引不会有多大帮助。如果大量查询将在该列上包含等式谓词,那么将该列作为多列索引中的前导列包括在内可能是可行的方法。
显然,如果这些表格大于&#34;那么您希望它们适合您的查询索引。