【问题标题】:Is it worth to optimize my post system in this way? [closed]以这种方式优化我的帖子系统是否值得? [关闭]
【发布时间】:2014-02-01 20:04:12
【问题描述】:

假设我有两个表,postuser。现在让我们创建两种方法:

  1. post.userIDuser.ID 上使用连接
  2. 选择一个帖子;在处理它时,查找它的userID;如果已经选择了用户(在脚本中,不是缓存,而是缓存在“内存中”),则使用这些数据来实现完整的帖子。如果用户未被选中;执行查询以从数据库中的用户中选择用户。检索并存储数据以供进一步使用(始终在内存中)。

这两种方法都可以,但第一种方法会发出一个“大”请求,而第二种方法会发出许多“小”请求。在我看来,第二个在大环境中会更好,而在小环境中会不方便(反之亦然)。

现在让我们定义三个场景:

  1. 少数用户发表的几篇文章
  2. 少数用户发布的许多帖子
  3. 许多用户的许多帖子

我想确切地了解这两种方法何时方便或不方便。 到目前为止,这是我的想法。

  1. 在第一种情况下,两种方法几乎相同
  2. 在第二种情况下,第二种方法应该更好,因为选择少数用户会导致很少的查询。
  3. 在第三种情况下,我认为第二种方法更适合,但我无法下定决心。

我说的对吗?我不应该采用第二种方法有什么特别的原因吗?我所说的是否有任何优点/缺点?

谢谢。

【问题讨论】:

    标签: php sql optimization


    【解决方案1】:

    根据我的经验,在任何情况下,使用精心设计的索引连接来执行您命名的“大请求”将比对数据库执行 n*n 查询快得多。

    如果数据部分很小(用户表通常不保存太多数据),则始终运行一个查询结果为一行的开销会导致性能下降。即使您之后将数据缓存在内存中,在最坏的情况下,您也有 1000 个不同用户的 1000 个帖子。

    【讨论】:

    • 感谢您分享您的经验 :)
    猜你喜欢
    • 2016-12-09
    • 2015-03-03
    • 1970-01-01
    • 1970-01-01
    • 2010-10-24
    • 2018-09-09
    • 2012-09-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多