数据库效率 - 每个用户的表与用户表

Yuv*_* A. 24 sql database processing-efficiency

对于有用户的网站.每个用户都有能力创建任何数量的,我们称之为"帖子":

效率方面 - 最好为所有帖子创建一个表,为每个帖子保存创建帖子的用户的用户ID - 或者为每个用户创建一个不同的单独,并只创建帖子那个用户?

Guf*_*ffa 31

当您向其添加更多数据时,数据库布局不应更改,因此用户数据肯定应在一个表中.

也:

  • 拥有多个表意味着您必须动态创建查询.

  • 一个表的缓存查询计划不会用于任何其他表.

  • 在一个表中包含大量数据并不会对性能产生太大影响,但是有很多表可以.

  • 如果要向表中添加索引以加快查询速度,则在单个表上执行操作要容易得多.


dri*_*iis 10

那么回答具体的问题:在查询效率方面,拥有小表总是更好,因此每个用户的表可能是最有效的.

但是,除非您有很多帖子和用户,否则这不太重要.即使拥有数百万行,您也可以通过良好的索引获得良好的性能.

我强烈建议不要使用每用户表策略,因为它会给您的解决方案增加很多复杂性.当您需要查找在一年内发布主题的用户时,您如何查询?

在需要时进行优化.不是因为你认为/害怕某些事情会变慢.(即使你需要进行优化,也会有比每个用户更容易的选项)

  • 我不同意“总是”-给我每个用户的所有帖子计数。编写一个UNION查询来汇总您的查询将变得很有趣,也不会很有效。 (2认同)

Mat*_*Mat 6

具有不同数量的表的模式通常是坏的.为您的帖子使用一个表.


Mar*_*ers 5

如果性能是一个问题,您应该了解数据库索引。虽然索引不是 SQL 标准的一部分,但几乎所有数据库都支持它们以帮助提高性能。

我建议您为所有用户的帖子创建一个表,然后向该表添加索引以提高搜索性能。例如,您可以在user列上添加索引,以便您可以快速找到给定用户的所有帖子。您可能还需要考虑添加其他索引,具体取决于您的应用程序的要求。