2011-09-04 46 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。 –