2011-10-28 3 views
1

回答質問サイトを設計しています。以前私は2つのテーブルを作成しました:投稿と回答。 vote_up、down、flagなどのフィールドに類似点があるため、これらのテーブルを1つの 'posts'にマージするのは大丈夫です(実行時間のクエリ)。フィードバック男性のための1つのテーブルでのクエリのパフォーマンス

おかげで、これはテーブル

CREATE TABLE IF NOT EXISTS 'posts' (
'id' int(10) unsigned NOT NULL AUTO_INCREMENT, 
'date_created' datetime NOT NULL, 
'date_edited' datetime DEFAULT NULL, 
'post_type' tinyint(1) DEFAULT NULL, 
'parent' int(10) unsigned DEFAULT NULL, 
'user' int(10) unsigned NOT NULL, 
'title' varchar(255) DEFAULT NULL, 
'slug' varchar(255) DEFAULT NULL, 
'content' text NOT NULL, 
'post_status' tinyint(1) DEFAULT NULL, 
'vote_up' int(10) unsigned DEFAULT '0', 
'vote_down' int(10) unsigned DEFAULT '0', 
'answered' tinyint(1) DEFAULT NULL, 
'flag' tinyint(1) DEFAULT NULL, 
PRIMARY KEY ('id') 
) 
+0

実際に覚えておきたいことは、データを正規化しておくことです(リレーショナルデータベースを使用していると仮定して)。本当に古いハードウェアや数百万のレコードを持っていない限り、私はあなたが提案したことをすることを検討しません。 – hafichuk

+0

あなたのスキーマを投稿してください、そして、少し助けてもらえますか? – hafichuk

+0

@hafichukあなたが参加すると、パフォーマンスが向上するでしょうか? – Moss

答えて

0

確かにあり、そこにヒット意味のあるパフォーマンスはありません。いくつかのフォーラムソフトウェアは、トピックごとにテーブルを持ち、投稿用のテーブルを持っています。新しいトピック(あなたの質問)が作成されると、ポスト・コンテンツはポスト・テーブルに入れられ、トピック・テーブルはタイトル、ID、おそらくいくつかのカテゴリ化などに使用されます。

0

インデックスを適切に設定すると、パフォーマンスが大幅に低下することはありません。私は、2つの異なるテーブル間の結合が、ある結合されたテーブルをそれ自身と結合するよりも速いことがあると思います。しかし、それは私が考える論理の決定です。質問を扱い、同じ答えをすることは理にかなっていますか? 1つのタイプに限定されたフィールドが複数ある場合やそれ以外のフィールドがある場合は、それらを別々に保つ方が良いです。

関連する問題