单桌或双桌-具有更好的性能



我必须创建一个系统来保存用户对两种不同类型模块的投票:NewsVideo

此表应具有相同的字段:

id  
entry_id  
vote  
user_id

因此,我很难添加一个新字段来保存模块的名称(module),这样我就可以在数据库中只有一个表,并在需要时对其进行过滤,并创建两个views用于统计。

我真的不知道最好的解决方案是一个带有新字段的表,还是最好有两个不同的表。

让我们假设我有1000新闻和1000用户,他们都会投票给我在表中有1000000行的每条新闻
现在假设我还有1000视频,在这种情况下,我的所有用户都会投票给它,其他1000000行代表单个表中的2000000行。

在这种情况下,我的性能有问题吗?如果我会有更多的视频,新闻和用户?

我应该做的操作:

  1. 插入
  2. 更新
  3. 搜索

如果您需要更多信息,请询问

我认为回答这个问题的方法是基于entry_id。投票将是关于something的,而something[/em>将引用另一个表。

因此,如果您有两个单独的NewsVideos表,那么您应该有两个独立的votes表。两者都不会有entry_id。一个将具有CCD_ 16,另一个具有video_id

如果你有一个表,比如说NewsVideos都有Entries,那么就有一个表格。

换句话说,我建议不要让一个表有条件地引用多个其他表。一方面,表达外国关键限制变得非常困难。此外,join操作表达起来很繁琐。其他人可能访问了该表,却没有意识到entry_id可以引用多个表,并错误地设置了查询。

所有这些问题都是可以克服的(在某些情况下,一张表可能是首选的解决方案)。但是,如果原始实体在不同的表中,则将投票放入不同的表。

最新更新