我想知道有多少表(比如〜100,000)而不是一個大表有什麼缺點。一個例子是每個用戶都有一個表,或者user_id是索引的所有用戶都有一個大表。有許多MySQL表的缺點?
E.g.其中一個名爲stuff
:
+----------+---------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+---------+------+-----+---------+-------+
| id | int(11) | YES | | NULL | |
| user_id | int(11) | YES | | NULL | |
| x | int(11) | YES | | NULL | |
| y | int(11) | YES | | NULL | |
| . | . | . | . | . | . |
| . | . | . | . | . | . |
| . | . | . | . | . | . |
與許多這樣的,每個被命名爲[user_id]_stuff
。這樣我知道給哪個表給user_id。
+-------+---------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+---------+------+-----+---------+-------+
| id | int(11) | YES | | NULL | |
| x | int(11) | YES | | NULL | |
| y | int(11) | YES | | NULL | |
| . | . | . | . | . | . |
| . | . | . | . | . | . |
| . | . | . | . | . | . |
我的直覺告訴我,有很多表會跑得更快,但有一個表會更易於維護/強大。
此外,是否會有安全問題,因爲用戶的ID被連接在一起,使表名稱?雖然我猜這將很容易檢查是否提供的ID是一個數字。
對100k表的查詢是什麼樣的? – Strawberry
您違反了規範化原則,爲每個用戶提供一張表。我希望你讀一下正常化。數據庫旨在處理*很多數據。 – Kermit
@FreshPrinceOfSO:不打算迂腐,但僅供參考這樣的設計實際上不會違反任何標準化原則 - 它違反了[正交設計原則](http://en.wikipedia.org/wiki/Principle_of_Orthogonal_Design)。 – eggyal