【问题标题】:PHP forum database optimisationPHP论坛数据库优化
【发布时间】:2012-04-19 07:06:53
【问题描述】:

我一直在考虑用 PHP 创建一个论坛,所以我做了一些研究,以了解人们在数据库中创建的表的标准是什么。在我查过的大多数网站上,他们总是选择为线程设置一个表格,为线程上的帖子设置第二个表格。

对我来说,为线程设置一个表格似乎非常合理,但一张表格可以容纳所有线程上的所有帖子似乎有点太多了。为每个线程创建一个表格来保存该线程的帖子而不是在一个表格中粘贴几十万个帖子会更好吗?

【问题讨论】:

  • 您没有指定要使用哪个数据库,但它们中的大多数都可以轻松处理数百万行的表。你可能不会有那么多帖子,所以你会没事的。为每个线程创建一个表不是要走的路。
  • 谢谢。我不是真的在做一个论坛,这只是一个假设的问题。

标签: php sql database optimization forum


【解决方案1】:

表格应代表数据库中数据的结构。如果您有 2 个对象,在这种情况下是您的线程和您的帖子,您应该将它们放在 2 个表中。

相信我,如果您按照自己的想法进行操作,那么要为每个帖子找出合适的表格将是一场噩梦。 SQL 会是什么样子?像

SELECT *
FROM PostTable17256

您必须在每个请求上动态构建此查询。

但是,通过使用 1 个表,您可以简单地获取 ThreadID 并将其作为变量传递给您的查询。

SELECT *
FROM Posts
WHERE ThreadID = $ThreadID

关系数据库被设计为具有包含大量行的表。顺便说一句,您可能会对 DBA 认为的“很多”感到惊讶。在大多数地方,1,000,000 行的表被认为是中小型。

【讨论】:

    【解决方案2】:

    不不不。数据库喜欢巨大的表。将帖子拆分为多个表格会引起很多麻烦。

    【讨论】:

      【解决方案3】:

      将帖子存储在一张表中是最佳解决方案。
      MySQL 可以轻松地在一个表中保存数百万行。

      创建多个表可能会导致一些问题。 例如,您将无法对来自不同线程的帖子使用 JOIN。

      【讨论】:

        猜你喜欢
        • 2012-03-09
        • 1970-01-01
        • 2021-07-07
        • 1970-01-01
        • 1970-01-01
        • 2017-09-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多