更多表对数据库效率SQL的影响

时间:2013-01-28 05:01:47

标签: mysql sql database

我目前正在尝试针对 1000-1500 用户创建chat program。我想知道我是否应该为每个user创建一个单独的表,就像在每个用户朋友的表中一样,消息或者应该创建一个包括所有表并将所有内容存储在那里,如哪个解决方案会更efficient?我相信每个用户的个人详细信息都有multiple个表格more efficient,因此我运行的大多数查询都在具有少量数据的表上运行。

有人可以告诉我,如果我错了吗?

2 个答案:

答案 0 :(得分:1)

你错了。理想的方法应该是为用户提供一个单独的表。即使是像ebay这样有数百万用户的公司;分发这些用户的方式就像在单个表中以A开头的所有用户一样......正如@Matt所提到的,我们无法创建x不是有界数字的表。

除了该表,您还可以拥有一个表,其中包含一个UserName列,该列将是指向您的用户表的外键。

最干净的解决方案对于维护朋友列表可能有点棘手。解决方法的解决方案可以是在User表中有一个列,其中包含逗号分隔的友元ID(同样是同一个表中的用户)。如果你不想对朋友列表有任何限制:你可以创建另一个表有两列userid,friendId的朋友。这两列都是User表上的外键。现在,查询将很简单select * form Friends where userid=<user>。这张桌子可能很大;但这就是索引进入画面的地方。您可以在userid列上创建索引,即使有大量记录,查询结果也会非常快。

答案 1 :(得分:1)

为每个用户设置一个表是一个糟糕的方法,你可以为每个用户准确保存一个文本文件,你不需要一个数据库,使用ddatabase的想法是建立实体之间的关系,为此你拥有主键/外键,通常你需要一个表用于每个实体,有时候3个表用于2个实体,具体取决于基数。例如,在用户表,消息表,messageUser表和freinds或联系人表等中你可以正常,其中freinds将存储作为freinds连接的UserIds,消息一个是messageId&lt; - &gt; UserId元组它将消息与用户匹配等等。