2012-04-05 13 views
1

私はPHPでフォーラムを作成することを考えていましたので、人がデータベースに作成するテーブルの標準が何であるかを調べました。私が検索したほとんどのWebサイトでは、スレッドごとに1つのテーブルを持ち、スレッドのポストに対して1つのテーブルを常に選択します。PHPフォーラムデータベースの最適化

スレッドのテーブルを持つことは、私にとっては完全に理にかなっているようですが、すべてのスレッドですべてのスレッドを保持するテーブルは、あまりにも多すぎるようです。 1つのテーブルに数十万のポストを張る代わりに、そのスレッドのポストを保持するスレッドごとにテーブルを作成する方が良いでしょうか?

+1

使用するデータベースは指定していませんが、ほとんどのデータベースでは数百万行のテーブルを簡単に処理できます。あなたは多くの投稿を持っていない可能性があるので、あなたは大丈夫でしょう。スレッドごとにテーブルを作成する方法はありません。 – NullUserException

+0

ありがとうございます。私は実際にフォーラムを作っているわけではない。ちょっと仮説的な質問だった。 – Zizo47

答えて

3

テーブルは、データベース内のデータの構造を表す必要があります。 2つのオブジェクトがある場合(この場合はスレッドと投稿です)、2つのテーブルに配置する必要があります。

あなたが思っている通りにすれば、各投稿ごとに表示する正しい表を見つけようとするのは悪夢です。 SQLはどのように見えますか?何かのように

SELECT * 
FROM PostTable17256 

のように、この要求を実行するたびに動的にこのクエリを構成する必要があります。

しかし、1つのテーブルを使用することで、単にThreadIDを取得して変数として渡すことができます。

SELECT * 
FROM Posts 
WHERE ThreadID = $ThreadID 

リレーショナルデータベースは、多くの行を保持するテーブルを持つように設計されています。あなたは、DBAが途中で "ロット"と考えるものにおそらく驚くでしょう。 1,000,000行のテーブルは、ほとんどの場所で小規模から中規模とみなされます。

1

ノープノープ。データベースは巨大なテーブルを愛する。ポストを複数のテーブルに分割することは、多くの頭痛を引き起こします。

0

ポストを1つのテーブルに格納するのが最適です。
MySQLはテーブルに何百万もの行を簡単に保持できます。

複数のテーブルを作成すると、問題はほとんど発生しません。 たとえば、異なるスレッドの投稿でJOINを使用することはできません。