Mysql - 创建一个存根表,其中包含另一个表中某些行的Id

时间:2016-04-06 12:33:12

标签: mysql database performance database-design structure

我正在开展一个项目,我需要有不同类型的用户,受害者和成员。数据库应该能够为用户提供大量的记录,例如500k,但是它变得更大是非常合理的。

目前,我将所有这些记录存储在同一个表“users”中,并使用一个角色字段来描述它的用户类型。最初这个表分为两个,一个用于受害者,一个用于成员,但是只有一个表简化了项目中的许多其他工作。

在大多数情况下,受害者的数量会比成员多得多,这使得查询受害者并不是一件大事,因为大多数行都是受害者。但是,当需要查询成员时(特别是计算成员的行数),我认为这会浪费很多时间查看最终不是我想要的行。

我的解决方案是创建一个存根“成员”表,它所做的只是保存用户表中行的id,它们是实际成员,仅包含主键+外键无符号整数。 / p>

此解决方案是否真的可以减少查询成员所需的时间?什么是最好的解决方案?同样,我假设将表拆分为两个单独的表将是最佳选择,如果这是唯一合理的方式我将选择那个,但是在同一个表中的所有表确实解决了许多其他问题。 / p>

1 个答案:

答案 0 :(得分:0)

还记得过去,搜索引擎会说“找到2,571,462次点击”吗?你相信这个数字吗?你读书的时候可能会改变这个数字。

然后他们变得聪明并说“大约2,570,000次点击”。显然是近似值。也许通过某种算法估计或每天计算一次。

然后来了“超过2,000,000次点击”。

现在没有提及。

我建议您每天计算一次,然后说“约1,234名会员”。

这里的教训......并非所有技术问题都可以(甚至应该)在代码中解决。有些应该通过改变用户的期望来解决。