我想知道拥有许多表(比如说~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 是否是一个数字。