2015-11-17 51 views
-1

我的mySQL數據庫中有10k個用戶,每個用戶需要存儲最後500個事件。 請指教我,我應該如何設計我的數據庫?一個MegaEventsTable或每個用戶的專用表?
許多小表的優點:
- 例如,我可以從500個條目中快速選擇50個事件,而不是從500 * 10k個條目。
- 它是更快獲得最高500項,並殺死在表中的所有其他條目該用戶
- 我可以分片我的條目的數據庫在未來
反政府一些時間:
- 我覺得10K表格是可怕的想法(以及如果將有100K)
一張桌子來統治他們全部,或千人小?

+0

投票轉移到DBA.SE,它已交叉發佈:http://dba.stackexchange.com/questions/121326/one-table-to-rule-them-all-or-thousand - 更小 –

+0

而請,不要這樣做(在許多網站發佈相同的問題)。在一個網站上有一個問題就足夠了。 –

+0

@ypercube對不起,這裏的人比在DBA上的人多。我應該在DBA上刪除我的帖子嗎? – Asprelis

回答

4

幾乎沒有情況下,你應該爲每個用戶有一張桌子。有許多原因。這裏有一些:

  • 對於小型表而言,MySQL的效率低​​於大型表。由於部分填充頁面,較小的表格將佔用更多空間。
  • 您不能使用userId作爲外鍵引用,因爲它引用了多個表。
  • 您不能輕易更改Users表的結構。你必須改變成千上萬。
  • 您可以使用索引和分區來提高查詢的速度。
  • 數據庫設計用於處理大量數據,而10,000行不是大量數據。
相關問題