2011-10-28 45 views
1

我正在設計一個答案問題網站。以前我創建兩個表格:帖子和答案。由於在vote_up,down,flag等等字段中有相似性,因此可以將執行時間查詢合併到一個'posts'中。在一個表中查詢性能

感謝您的反饋傢伙,這是

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

通過適當的索引,不會有明顯的性能下降。我猜兩個不同的表之間的連接有時可能比連接一個自己的表更快。但這更多的是我認爲的邏輯決定。處理問題和回答問題是否有意義?如果一個類型或另一個類型專用的字段不止一個,則最好將它們分開。