2011-09-04 93 views
1

我正在使用MySQL和PHP的項目。我會有很多(可能有數百到數千個)用戶,每個用戶將有很多(數千)與他/她有關的條目。我最初考慮的是將所有條目粘貼到一個表中,並將其中一列作爲條目對應的用戶標識,但此表會變得很龐大,並且可能難以管理。我需要經常查詢表以獲取與特定用戶ID相對應的條目,這可能需要一段時間。但是,我很少需要查詢不共享用戶標識的數據。MySQL表組織

我現在正在考慮爲每個用戶ID(例如「user1」爲「table1」)做一個表格,然後查詢單個表格。然而,擁有數千張桌子聽起來也不錯。

你會推薦哪個?還是有更好的解決方案,我沒有通過? (我希望我的問題有道理!)

+0

什麼是巨大的表格?一張桌子上的數千萬條記錄是可以的。一張桌子上有幾十GB是可以的。如果桌子大小成問題,您可以將桌子分開! –

回答

3

這樣做的唯一有效方法是將所有內容都放在一張表中。 MySQL不是用於這種極端用途的。

我建議你保留一個表中的所有條目,每個條目都有UserID。不要忘記把該指數放在那個領域。

這可能是關於多個表合理的思維,但如果你這樣做的,你的查詢將採取實際時間和數據會使用更多的磁盤空間,因爲每個表中創建aditional的開銷。

去一張桌子,去唯一vaid的方式。分裂不是一個選項,你只會創建數據碎片,讓你自己很難的時候,你會想要例如做一個備份。

只是一個aditional的評論:我看過很多次20GB表,但我從來沒有見過一個超過100個表的數據庫。

+0

你是什麼意思「不要忘記把這個領域的指數」?你的意思是添加一個自動遞增的ID號碼嗎? – Draksis

+0

只需在INDIAN *表中將INDEX作爲外鍵即可。自動遞增+ UNIQUE鍵用於* Users *表中的主ID。 –