PHP论坛数据库优化

时间:2012-04-05 14:16:42

标签: php sql database optimization forum

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

拥有一个表的线程似乎对我来说是完全合理的,但是一个表来保存所有线程上的所有帖子看起来有点太多了。是否更好的是为每个线程创建一个表,该表将保存该线程的帖子而不是在一个表中粘贴几十万个帖子?

3 个答案:

答案 0 :(得分:3)

表格应代表数据库中数据的结构。如果您有2个对象(在本例中是您的主题和帖子),则应将它们放在2个表中。

相信我,如果你按照自己的想法去做,那么试图找出每个帖子的正确表格将是一场噩梦。 SQL会是什么样的?像

这样的东西
SELECT *
FROM PostTable17256

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

但是,通过使用1个表,您只需获取一个ThreadID并将其作为变量传递给您的查询。

SELECT *
FROM Posts
WHERE ThreadID = $ThreadID

关系数据库旨在拥有包含大量行的表。你可能会惊讶于DBA认为顺便说一下这是一个“很多”。在大多数地方,包含1,000,000行的表被认为是中小型。

答案 1 :(得分:1)

Nope nope nope。数据库爱大桌子。将帖子拆分成多个表会引起许多令人头疼的问题。

答案 2 :(得分:0)

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

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