我想知道多张桌子(比方说大约100,000张)的缺点是什么,而不是一张大桌子。一个例子是每个用户拥有一个表,或者对于所有user_id是索引的用户都有一个大表。
例如,其中一个名为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是否为数字是很容易的。
发布于 2013-07-24 20:11:18
我的直觉告诉我,拥有许多表会运行得更快,但是拥有一个表将更容易维护/更健壮。
许多结构相同的表将与正交设计原理相反。
,,不要这么做。至少不是没有很好的理由--有了合适的索引,每个表上的数百万条记录就足以让MySQL轻松地处理,而无需进行分区;即使确实需要对数据进行分区,也存在更好的方式而不是这种手工拼凑(这会导致数据不明确、潜在不一致的数据,并导致数据操作代码中的冗余和复杂性)。更别提了,在MySQL,联接被限制为最多61个表。里。
相反,单表方法是解决问题的正确方法。
https://stackoverflow.com/questions/17843823
复制相似问题