【问题标题】:Create/Destroy queries faster than edit/update?创建/销毁查询比编辑/更新更快?
【发布时间】:2017-11-10 00:40:24
【问题描述】:

创建/销毁查询是否比编辑/更新更快?

如果我们想在帖子中添加点赞功能,最好创建一个带有 user_id 和 post_id 列的新表“likes”,还是在 post 表上创建一个新列 likes_number?

非常感谢。

【问题讨论】:

  • 创建字段来标记数据而不是创建新表
  • 当然你是最棒的@Hogan!

标签: javascript sql ruby-on-rails database performance


【解决方案1】:

这在很大程度上取决于许多不同的参数,但一般考虑以下几点:

  • 是否有特定于标志的元数据?在点赞的情况下,可能有:点赞的用户、点赞发生时间的时间戳作为示例。在 post 表中跟踪这些数据需要为每条数据创建一个列。如果要存储此元数据,则应使用另一个表。

  • 是否存在一对多关系?在这种情况下——可能有很多喜欢的人。这表明另一个表中的一行可能具有价值。每一行都存储类似的元数据。

  • 表的使用情况——锁定会对性能产生影响吗?在您的情况下,我对此表示怀疑,但锁定行以更改类似计数可能会导致性能问题。如果类似的数据在不同的表中,则没有影响。

在我看来,在这种情况下,另一个表是有意义的。

其他类型的数据可能是另一种方式——例如,在待办事项列表中完成任务的标志。在这种情况下,只添加一列是有意义的。


至于创建/销毁与编辑/更新——这在很大程度上取决于许多细节,但我想说一般来说编辑/更新更快。

【讨论】:

  • 就此而言,您根本不需要显式锁定一个单独的“like”表,而且是否计算锁定的行数也没有多大关系。跨度>
  • @Clockwork-Muse -- 对,如果没有修改并且只插入行,则不需要锁定。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-09-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多