MySQL表组织

时间:2011-09-04 16:06:36

标签: mysql database-design

我正在使用MySQL和PHP开展项目。我将拥有许多(可能数百到数千)用户,并且每个用户将有许多(数千)与他/她相关的条目。我最初想的是将所有条目粘贴到一个表中,并且其中一个列是条目对应的用户ID,但是这个表会变得很大,并且可能很难管理。我需要经常查询表以获取与特定用户ID相对应的条目,这可能需要一段时间。但是,我很少需要查询不共享用户ID的数据。

我现在正在考虑为每个用户ID创建一个表(例如,对于userID为“table1”),然后只查询各个表。但是,拥有数千张桌子听起来也不错。

你会推荐哪一个?或者,我有没有更好的解决方案? (我希望我的问题有道理!)

1 个答案:

答案 0 :(得分:3)

这样做的唯一有效方法是将所有内容放在一个表中。 MySQL并没有为这种极端用法做好准备。

我建议你将所有条目保存在一个表中,每个表都有UserID。并且不要忘记将索引放在该字段上。

考虑多个表可能是合理的,但如果你这样做,你的查询实际上会花费更多时间,而数据将使用更多磁盘空间,因为每个表都会产生额外的开销。

选择一张桌子,继续使用唯一的方式。分割不是一种选择,您只需创建数据碎片,让自己很难在想要的时候例如,做一个备份。

只是一个附加评论:我已多次看过20GB表,但我从未见过超过100个表的数据库。