增加计数器或查询关系?

时间:2015-08-01 20:04:50

标签: sql django postgresql relational-database scalability

假设我有一个User模型和一个Favorite模型。我想知道用户有多少收藏。

我看到你可以通过两种方式实现这一目标。

  1. 创建收藏夹时,以原子方式递增用户模型上的计数器属性。使用user_instance.favorite_count

  2. 进行访问
  3. 查询用户的收藏计数:user_instance.favorite_set.count()

  4. 我认为随着数据库的增长,计数变得更加昂贵。

    哪种实施更具可扩展性?

1 个答案:

答案 0 :(得分:0)

我在这里闻到一些过早的优化。数据库非常擅长计算内容。除非你已经测量并且看到一些可识别的缓慢,否则你不应该试图去反规范化:很难做到正确并且总是有失去同步的风险。继续查询;并且不要忘记您可以使用聚合来一次查询用户的查询集的计数。