2015-10-15 18 views
0

我有2個表:使用多個表或只是一個性能

DB_ACCEPTED_USERS: 
+-------+-----------------+---------+ 
| id | photo_id  | user | 
+-------+-----------------+---------+ 
| 1  | 1234   | foo1 | 
| 2  | 5678   | foo2 | 
+-------+-----------------+---------+ 

DB_REJECTED_USERS: 
+-------+-----------------+---------+-----------+ 
| id | photo_id  | user | reason | 
+-------+-----------------+---------+-----------+ 
| 1  | 4321   | foo3 | too fat | 
| 2  | 8765   | foo4 | too thin | 
+-------+-----------------+---------+-----------+ 

DB_ACCEPTED_USERS是唯一一個活的。目前每秒鐘都會有數百個查詢。 DB_REJECTED_USERS只能由管理員訪問。

我正在考慮改變結構,以這樣的:

DB_USERS: 
+-------+-----------------+---------+---------+-----------+ 
| id | photo_id  | user |rejected | reason | 
+-------+-----------------+---------+---------+-----------+ 
| 1  | 1234   | foo1 | 0  | null  | 
| 2  | 5678   | foo2 | 0  | null  | 
| 3  | 4321   | foo3 | 1  | too fat | 
| 4  | 8765   | foo4 | 1  | too thin | 
+-------+-----------------+---------+---------+-----------+ 

這會不會對查詢時間或性能有任何影響?很高興只有一個表,但它也會有很多數據,這些數據是從不在線查詢。在線需要photo_iduser

就性能而言,如果只有1個表,會保留2個表使DB_ACCEPTED_USERS的查詢更好嗎?

回答

1

第一:你有沒有性能問題?如果沒有,爲什麼要改變?它現在工作嗎?

如果您有性能問題?調查你的問題並找出原因,然後解決原因。

但是,我不知道你的其他表和它們之間的關係,但這兩個表在我看來都是同一種數據,所以它們屬於同一個表。 不要擔心性能問題,如果你的數據庫模式沒問題,你可以在你的表中有數百萬行,而不需要注意它。

+0

我不是故意將它標記爲「好」。我只是在編輯它。我認爲這應該是一個評論,而不是一個答案。 –

+0

我打算寫評論,但後來我意識到這是他的問題的答案:性能和爲什麼只使用1個表。但我同意,它也可以寫成評論。 – Terradon

1

可能不值得組合,因爲拒絕很少使用。合併會減慢你的查詢的速度,這取決於它處理的額外數據量可能會很多。此外,您還必須爲查詢添加一個測試,以便不包括被拒絕的用戶,這也會將一些微秒添加到查詢中。

0

有很多null值是不是一件好事。我相信你應該爲用戶使用一張表格,而另一張表格則爲理由。通過這種方式,我相信應該更容易查詢數據庫。更多的數據庫得到規範化,這是更好的。在第一種方法中,很難讓用戶獨一無二。我的意思是,如果另一個人獲得foo3暱稱並被接受。在我看來,下面的查詢應該更好,但關於速度我不知道。

DB_USERS: 
+-------+-----------------+---------+ 
| id | photo_id  | user | 
+-------+-----------------+---------+ 
| 1  | 1234   | foo1 | 
| 2  | 5678   | foo2 | 
+-------+-----------------+---------+ 
DB_REJECT_REASONS: 
+-------+------------+---------+ 
| id | user_id | reason | 
+-------+------------+---------+ 
| 1  | 2   |too fat | 
| 2  | 4   |too thin | 
+-------+------------+---------+ 
相關問題