以这种方式优化我的帖子系统是否值得?

时间:2014-02-01 11:55:51

标签: php sql optimization

假设我有两个表,发布用户。现在让我们创建两种方法:

  1. post.userID user.ID
  2. 上使用联接
  3. 选择一个帖子;在处理时,查找 userID ;如果用户已被选中(在脚本中,未缓存,但缓存在“内存中”),请使用这些数据进行完整发布。如果用户尚未被选中;执行查询以从数据库中选择用户。检索并存储数据以供进一步使用(始终在内存中)。
  4. 两种方法都可行,但第一种方法会产生一个“大”请求,而第二种方法会产生许多“小”请求。在我看来,第二个在巨大的环境中会更好,在小的环境中会更不方便(反之亦然)。

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

    1. 少数用户的帖子很少
    2. 少数用户的许多帖子
    3. 许多用户的许多帖子
    4. 我想准确理解这两种方法何时会或不方便。 到目前为止,这是我的想法。

      1. 在第一种情况下,两种方法几乎相同
      2. 在第二种情况下,第二种方法应该更好,因为选择少数用户将导致少量查询。
      3. 在第三种情况下,我认为第二种方法更适合,但我无法真正下定决心。
      4. 我说的是对的吗?我不应该采用第二种方法吗?是否有任何优点/缺点可以添加到我所说的内容中?

        感谢。

1 个答案:

答案 0 :(得分:1)

根据我的经验,用一个精心设计的索引连接命名一个“大请求”,无论如何都要比对数据库进行n * n查询要快得多。

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